get_disty()

get_disty(<ángulo>, <distancia>)

Retorna:

El desplazamiento vertical del vector (ángulo, distancia).

Descripción:

Devuelve distancia vertical (eje de la coordenada y) a partir del ángulo y distancia (sobre ese ángulo) pasados como parámetros. Es decir, devuelve la distancia que recorre en vertical el vector formado por el ángulo y longitud (distancia) indicados.

Se recuerda que el ángulo se especifica en milésimas de grado y como distancia se puede especificar cualquier expresión numérica válida.

La función utilizada para calcular la distancia horizontal, en lugar de la vertical, es get_distx().

Programa ejemplo:
PROGRAM ejemplo_get_disty;

GLOBAL
    distancia;
    distancia_horizontal;
    distancia_vertical;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 3);
    write(0, 160, 200, 7, "Utilice los cursores para mover el triángulo.");
    write(0, 0, 0, 0, "Distancia vertical:");
    write_int(0, 0, 10, 0, offset distancia_vertical);
    graph=101;
    LOOP
        IF (key(_up)) distancia+=2; END
        IF (key(_down)) distancia-=2; END
        IF (key(_right)) angle-=2000; END
        IF (key(_left)) angle+=2000; END

        // Calculamos la distancia vertical
        distancia_vertical = get_disty(angle, distancia);

        distancia_horizontal = get_distx(angle, distancia);
        x=160+distancia_horizontal;
        y=100+distancia_vertical;
        FRAME;
    END
END


En el ejemplo se pone como fondo de la pantalla una gráfica circular, sobre la que se manejará con los cursores un triángulo, modificando su distancia y ángulo al centro de la gráfica.

El programa calcula la distancia horizontal y vertical para emplazar el triángulo a partir de las coordenadas del centro de pantalla (160, 100), mostrándose en todo momento la distancia vertical en la esquina superior izquierda.


Si se quiere avanzar las coordenadas del proceso una distancia en un ángulo determinado, se pueden utilizar las siguientes sentencias:

  x+=get_distx(<ángulo>, <distancia>);
  y+=get_disty(<ángulo>, <distancia>);

Esto sería equivalente a la siguiente sentencia (utilizando la función xadvance()).

  xadvance(<ángulo>, <distancia>);

Si el ángulo en el que se quiere mover el proceso es el que tiene en su variable local angle, entonces esta misma operación se podría realizar con la función advance() de la siguiente forma:

  advance(<distancia>);


La función get_disty() equivale a calcular el seno del ángulo y multiplicarlo por la distancia, cambiando este resultado de signo, debido a que el eje Y de pantalla avanza hacia abajo (de manera contraria a la función seno).


Ver: Uso de ángulos en el lenguaje - get_distx() - xadvance() - advance()