get_distx()

get_distx(<ángulo>, <distancia>)

Retorna:

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

Descripción:

Devuelve distancia horizontal (en el eje de la coordenada x) a partir del ángulo y distancia (sobre ese ángulo) pasados como parámetros. Es decir, devuelve la distancia que recorre en horizontal el vector formado por el ángulo y longitud (distancia o módulo del vector) 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 vertical, en lugar de la horizontal, es get_disty().

Programa ejemplo:
PROGRAM ejemplo_get_distx;

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 horizontal:");
    write_int(0, 0, 10, 0, offset distancia_horizontal);
    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 horizontal
        distancia_horizontal = get_distx(angle, distancia);

        distancia_vertical = get_disty(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 horizontal 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_distx() equivale a calcular el coseno del ángulo y multiplicarlo por la distancia.


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