void fget_angle3d( CDIV_3D_POINT punto_inicial, CDIV_3D_POINT punto_final, CDIV_3D_POINT * angulo3d )
Descripción:
Devuelve el ángulo 3d que hay desde el punto inicial (x, y, z) hasta el punto final (x, y, z).
Se recuerda que el ángulo se especifica en grados. La función devuelve siempre en todo los ángulos un valor entre -180000 y 180000 (un ángulo entre -180 y 180 grados).
Ejemplo de utilización de fget_angle3d():
PROCESS( proceso_movil ) BEGIN ctype = c_3d_object; //Definimos como objeto 3D object3d = create_bitmap_3d( 1, 103 ); LOOP FRAME; END MAIN_PROGRAM_CDIV PRIVATE int coordenada_x, coordenada_z, resultado, fichero1; CPROCESS * movil; CDIV_3D_POINT pthis, pprcs; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); fichero1 = load_fpg("../help.fpg"); y = -5; //Elevamos la cámara para que se pueda ver start_3d(0, fichero1, 100, 512, 512, 0, this); movil = new proceso_movil(); write(0, 0, 0, 0, "Coordenadas proceso camara"); write(0, 0, 10, 0, "X:"); write_int(0, 20, 10, 0, &x); write(0, 0, 20, 0, "Z:"); write_int(0, 20, 20, 0, &z); write(0, 0, 40, 0, "Coordenadas proceso movil"); write(0, 0, 50, 0, "X:"); write_int(0, 20, 50, 0, &movil->x); write(0, 0, 60, 0, "Z:"); write_int(0, 20, 60, 0, &movil->z); write(0, 0, 80, 0, "Angulo Y de camara al proceso:"); write_int(0, 0, 90, 0, &angle3d.y); write(0, 0, 200, 6, "Pulsa [ESPACIO] para hallar otros dos puntos."); LOOP{ movil->x = rand(-256, 256); movil->z = rand(-256, 256); pthis.x = x; pthis.y = y; pthis.z = z; pprcs.x = movil->x; pprcs.y = movil->y; pprcs.z = movil->z; //Hallamos el ángulo entre los dos puntos fget_angle3d( pthis, pprcs, &angle3d); scan_code = 0; while (scan_code!=_space) { FRAME; } } END_PROGRAM
En el ejemplo, después de poner los mensajes necesarios, se hallan las coordenadas x y z de dos puntos hallados al azar y se guardan en las variables destinadas para ello, calculando con la función fget_angle3d() el ángulo entre dichos puntos. Cada vez que se pulse la barra espaciadora se repetirá el proceso.
Ver: Uso de ángulos en el modo 3D - get_angle3d() - fget_dist3d()