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