get_dist()

get_dist(<código 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.

Si el proceso ha definido su variable local resolution es importante que el proceso hasta el que se quiere obtener la distancia la tenga definida al mismo valor. Es decir, si ambos procesos manejan las coordenadas en centésimas en lugar de unidades (con resolution=100), la distancia entre ambos también se obtendrá en centésimas, pero si el valor de dicha variable difiere en ambos procesos, el resultado de la función get_dist() carecerá de sentido.

Programa ejemplo:
PROGRAM ejemplo_get_dist;

PRIVATE
    distancia_resultante;
    identificador_proceso;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 1);
    graph=100;
    x=160;
    y=100;

    identificador_proceso = proceso_móvil(80, 50, 101);

    write(0, 160, 200, 7, "Use los cursores para mover el triángulo.");
    write(0, 0, 0, 0, "Distancia desde la bola hasta el triángulo:");
    write_int(0, 0, 10, 0, offset distancia_resultante);
    LOOP

        // Hallamos la distancia entre los dos procesos
        distancia_resultante = get_dist(identificador_proceso);

        FRAME;
    END
END

PROCESS proceso_móvil(x, y, graph)
BEGIN
    LOOP
        IF (key(_right)) angle-=10000; END
        IF (key(_left)) angle+=10000; END
        IF (key(_up)) advance(4); END
        FRAME;
    END
END


Al inicio se pone el fondo de pantalla y el programa principal define su gráfico como una bola situada en el centro de la pantalla.

Despúes se crea un proceso del tipo proceso_móvil del cual se coge el código identificador, que se puede controlar con los cursores.

Dentro del bucle principal se calcula y muestra continuamente en pantalla la distancia entre los dos procesos.

La función fget_dist() 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_dist(id2)

Sería equivalente a:

    fget_dist(x, y, id2.x, id2.y)

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

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


Esta función se puede utilizar para detectar choques entre procesos por proximidad entre ellos, aunque se suele utilizar para ello la función collision() que detecta cuándo dos procesos tienen sus gráficos superpuestos.

Por ejemplo, con los procesos visualizados dentro de una ventana de modo 7 (ver start_mode7()) no se puede utilizar la función collision() debiéndose obtener la distancia entre los procesos para comprobar si chocan (si su distancia es menor que una determinada).


Ver: fget_dist() - get_angle() - get_distx() - get_disty()