Lógica - Necesito un algorítmo para resolver un problema de trigonometría

 
Vista:
sin imagen de perfil

Necesito un algorítmo para resolver un problema de trigonometría

Publicado por Ezequiel (1 intervención) el 30/08/2021 00:13:18
Hola ¿Cómo están? Estoy teniendo problemas para resolver la lógica del programa que les paso a explicar.

Tengo un ángulo formado en un plano cartesiano, supongamos que de momento el ángulo tiene un valor de 0º:

3663V


En mi programa, haciendo click sobre cualquier parte de la pantalla, se calcula el nuevo ángulo formado con respecto a la posición donde se hace click y teniendo como punto de origen el centro de la pantalla:

weege YxyCl


Luego de hacer click, la transición entre los distintos ángulos no se da espontaneamente, sino que de manera gradual el ángulo previo va aumentando o disminuyendo hasta coincidir con el ángulo nuevo, y es en este punto donde surge el problema. Lo había pensado hacer con un simple bucle donde se pregunte si el ángulo nuevo es mayor o menor al ángulo previo, y dependiendo la respuesta aumentar o disminuir (en una cantidad relativamente pequeña) el valor del ángulo previo en cada iteración del bucle.

Por ejemplo, si el ángulo previo es 0º y el nuevo ángulo es 45º, en cada vuelta de bucle aumentaría el valor del ángulo previo en 0.01º. Cuando los dos ángulos coinciden se sale del bucle.

Pero este método tiene un grave problema y se da en casos como el siguiente:

zE5bt


Antes que nada, explico que lo importante en este programa no es mostrar el ángulo formado, sino la dirección de la flecha, con eso en mente, prosigo. La lógica usada haría que el ángulo previo disminuya gradualmente hasta llegar al ángulo nuevo, pero tratándose de ángulos hay una manera más "eficiente" o rápida de llegar al ángulo nuevo, y es aumentar su valor hasta llegar hasta 225º en vez de disminuirlo hasta -135º. En ambos casos, la flecha terminaría en la misma posición.

Lo pensé mucho pero no pude llegar a una solución sobre como programar este funcionamiento que se ajuste a cada situación. Por eso recurro a ustedes. Espero que se entienda bien todo.

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder