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().
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.