int near_angle( int ángulo, int ángulo_final, int 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 (1) o cinco (5).
MAIN_PROGRAM_CDIV PRIVATE int angulo2; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); load_fpg("../help.fpg"); put_screen(1, 1); mouse.graph=200; graph=101; write(0, 160, 200, 7, "Mueva el cursor del ratón"); LOOP{ angulo2=fget_angle2d(x, y, mouse.x, mouse.y); // Acerca el ángulo actual al final en 10 grados como máximo angle = near_angle(angle, angulo2, 10000); advance2d(6); FRAME; } END_PROGRAM
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_angle2d(); después modifica su ángulo para que se acerque un máximo de 10 grados 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 advance2d().
Se puede observar cómo el triángulo persigue continuamente 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_angle2d() - fget_angle2d()