int fget_dist3d( 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( 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 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);
        
        resultado = fget_dist3d(this, movil);
        
        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 dos procesos. Cada vez que se pulse la barra espaciadora se repetirá el proceso.

 fget_dist3d(this, id2)

Sería equivalente a:

 fget_dist3d( punto3d0, punto3d1 )

Obtener la distancia desde las coordenadas (x, y, z) del proceso actual hasta las coordenadas (x, y, z) del proceso cuyo código identificador es id2.

La función get_angle3d() se utiliza para obtener el ángulo hasta otro proceso, en lugar de la distancia.


Ver: fget_dist2d() - get_angle3d() - get_distx3d() - get_disty3d() - get_distz3d()