int fget_dist2d( CPROCESS * id1, CPROCESS * id2 )
Retorna:
La distancia de un proceso hasta otro proceso.
Descripción:
Devuelve la distancia desde un proceso indicado por el identificador hasta el proceso cuyo código identificador se le pasa como parámetro.
Ver formas de obtener el código identificador, para más información.
PROCESS_INIT( proceso_movil )(int _x, int _y, int _graph) BEGIN_INIT x=_x; y=_y; graph=_graph; END_INIT BEGIN LOOP{ if (key(_right)) angle-=10000; if (key(_left)) angle+=10000; if (key(_up)) advance2d(4); FRAME; } END MAIN_PROGRAM_CDIV PRIVATE int distancia_resultante; CPROCESS * identificador_proceso; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); load_fpg("../help.fpg"); put_screen(1, 1); graph=100; x=160; y=100; identificador_proceso = new proceso_movil(80, 50, 101); write(0, 160, 200, 7, "Use los cursores para mover el triangulo."); write(0, 0, 0, 0, "Distancia desde la bola hasta el triangulo:"); write_int(0, 0, 10, 0,&distancia_resultante); LOOP{ // Hallamos la distancia entre los dos procesos distancia_resultante = fget_dist2d(this, identificador_proceso); FRAME; } END_PROGRAM
Al inicio se pone el fondo de pantalla y el programa principal define su gráfico como una bola situada en el centro de la pantalla.
Después se crea un proceso del tipo proceso_movil del cual se coge el código identificador, que se puede controlar con los cursores.
Dentro del bucle principal se calcula y muestra continuamente en pantalla la distancia entre los dos procesos.
La función fget_dist2d() se utiliza para obtener la distancia entre dos puntos, en lugar de entre dos procesos. Si el código identificador del proceso se tiene, por ejemplo, en una variable denominada id2, entonces la llamada a la función:
get_dist2d(id2)
Sería equivalente a:
fget_dist2d(x, y, id2->x, id2->y)
Obtener la distancia desde las coordenadas (x, y) del proceso actual hasta las coordenadas (x, y) del proceso cuyo código identificador es id2.
La función get_angle2d() se utiliza para obtener el ángulo hasta otro proceso, en lugar de la distancia.
Esta función se puede utilizar para detectar choques entre procesos por proximidad entre ellos, aunque se suele utilizar para ello la función collision() que detecta cuándo dos procesos tienen sus gráficos superpuestos.
Ver: fget_dist2d() - get_angle2d() - get_distx2d() - get_disty2d()