int fget_angle2d( CPROCESS * id1, CPROCESS * id2 )


Retorna:

 El ángulo de un proceso hacia otro proceso.

Descripción:

Devuelve el ángulo desde un proceso indicado por el identificador hasta el proceso cuyo código identificador se le pasa como parámetro.

Se recuerda que el ángulo se especifica en milésimas de grado. La función devuelve siempre un valor entre -180000 y 180000 (un ángulo entre -180 y 180 grados).

Ver formas de obtener el código identificador, para más información.


PROCESS_INIT( proceso_movil )(int _x, int _y, int _graph)

BEGIN_INIT
  x=_x; y=_y; graph=_graph;
END_INIT

BEGIN
    LOOP{
        if (key(_right)) angle-=10000;
        if (key(_left)) angle+=10000;
        if (key(_up)) advance2d(4);
        FRAME;
    }
END

MAIN_PROGRAM_CDIV

PRIVATE
    int angulo_resultante;
    CPROCESS * identificador_proceso;

BEGIN_PROGRAM

    set_gfx(GFX_AUTODETECT_WINDOWED);
    set_mode(m320x200);

    load_fpg("../help.fpg");
    put_screen(1, 1);
    graph=101;
    x=160;
    y=100;

    identificador_proceso = new proceso_movil(80, 50, 101);

    write(0, 160, 200, 7, "Use los cursores para mover el triangulo.");
    write(0, 0, 0, 0, "Angulo desde la bola hacia el triangulo:");
    write_int(0, 0, 10, 0, &angulo_resultante);

    LOOP{

        // Hallamos el ángulo entre los dos procesos
        angulo_resultante = fget_angle2d(this, identificador_proceso);
        angle=angulo_resultante;

        FRAME;
    }
END_PROGRAM

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.

Después, se crea un proceso del tipo proceso_movil 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 el ángulo entre los dos procesos.

La función fget_angle2d() se utiliza para obtener el ángulo 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_angle2d(id2)

Sería equivalente a:

 fget_angle2d(x, y, id2->x, id2->y)

Obtener el ángulo 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_dist2d() se utiliza para obtener la distancia hasta otro proceso, en lugar del ángulo.


Ver: Uso de ángulos en el lenguaje - fget_angle2d() - get_dist2d()