near_angle()

near_angle(<ángulo>, <ángulo final>, <incremento>)

Retorna:

Un nuevo ángulo más próximo al ángulo final.

Descripción:

Acerca un ángulo a otro en el incremento dado. La función devuelve el nuevo ángulo.

Se utiliza cuando se quiere que un ángulo (<ángulo>) varíe gradualmente hasta convertirse en otro (<ángulo final>); para ello, la función necesita el ángulo original, el ángulo final y el incremento angular que se le va a ir sumando o restando al ángulo original.

Se recuerda que todos los ángulos se especifican en milésimas de grado. El incremento angular no es más que un ángulo pequeño, como pudiera ser un grado (1000) o cinco (5000).

Programa ejemplo:
PROGRAM ejemplo_near_angle;

PRIVATE
    ángulo2;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 1);
    mouse.graph=200;
    graph=101;
    write(0, 160, 200, 7, "Mueva el cursor del ratón");
    LOOP
        ángulo2=fget_angle(x, y, mouse.x, mouse.y);

        // Acerca el ángulo actual al final en 10 grados como máximo
        angle = near_angle(angle, ángulo2, 10000);

        advance(6);
        FRAME;
    END
END


En el ejemplo se define el cursor del ratón como una pequeña cruz que el usuario puede mover.

El programa principal define su gráfico como un triángulo (graph=101;) que, en cada iteración del bucle, obtiene el ángulo hacia el cursor del ratón con la función fget_angle(); después modifica su ángulo para que se acerque un máximo de 10 grados (10000) hacia el ángulo del cursor, utilizando la función near_angle() y, por último, avanza 6 puntos en esa dirección utilizando la función advance().

Se puede observar cómo el triángulo persigue contínuamente al cursor del ratón sin realizar ningún giro brusco (de más de 10 grados).


Ver: Uso de ángulos en el lenguaje - angle - get_angle() - fget_angle()