int fget_dist3d( CDIV_3D_POINT punto0, CDIV_3D_POINT punto1 )
Retorna:
La distancia de un punto 3D a otro.
Descripción:
Devuelve la distancia desde el punto0 hasta el punto1.
Ejemplo de utilización de fget_dist3d():
PROCESS( proceso_movil )
BEGIN
ctype = c_3d_object; //Definimos como objeto imagen 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 punto0, punto1;
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, "Distancia de camara al proceso:");
write_int(0, 0, 90, 0, &resultado);
write(0, 0, 200, 6, "Pulsa [ESPACIO] para hallar otros dos puntos.");
LOOP{
movil->x = rand(-256, 256);
movil->z = rand(-256, 256);
punto0.x = this->x; punto0.y = this->y; punto0.z = this->z;
punto1.x = movil->x; punto1.y = movil->y; punto1.z = movil->z;
resultado = fget_dist3d(punto0, punto1);
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_dist3d() la distancia entre los dos puntos. Cada vez que se pulse la barra espaciadora se repetirá el proceso.
La función get_angle3d() se utiliza para obtener el ángulo 3D hasta otro proceso, en lugar de la distancia.
Esta función se puede utilizar para detectar choques entre procesos por proximidad entre ellos.
Ver: fget_dist2d() - get_angle3d() - get_distx3d() - get_distz3d()