int get_dist3d( CPROCESS * identificador )


Retorna:

 La distancia hasta otro proceso.

Descripción:

Devuelve la distancia desde el proceso actual (el que llamó a esta función) 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.


Ejemplo de utilización de get_dist3d():
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;
 
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 = get_dist3d(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 get_dist3d() la distancia entre los dos procesos. Cada vez que se pulse la barra espaciadora se repetirá el proceso.

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