Esto es lo que pasa por tener algo en la mente de forma difusa y no tomarlo en cuenta, a pesar de que he estado sintiendo cosquillas en la nuca durante todo el día.
En una conversación mantenida esta misma mañana con el maestro Nocturno estuvimos hablando de este tema, y mencioné como de pasada la palabra radián, no sé por qué surgió el mencionarlo, pero Manolo me miró con esa mirada que dice "no sé para qué hablas de radianes aquí y ahora" ... como durante la conversación me demostró que tenía la trigonometría fresca y clara tomé mis radianes y me los metí en el ... baúl de las-cosas-que-sabes-pero-que-no-usas.
Llevo todo el día luchando a brazo partido con el puñetero Sonar intentado que mi programa Delhpi dibuje lo que he comprobado algunos cientos de veces que es correcto: una puñetera línea cuya longitud sea proporcional a la medida realizada por mi PIC y cuya inclinación (ángulo) sea igual a que tenía el Servo en el momento de realizarla.
O sea que estoy obteniendo Coordenadas Polares: Un ángulo y una distancia.
Pero como para dibujarla sobre un espacio cartesiano necesito transformar éstas coordenadas polares a las tradicionales X e Y cartesianas:
El tema no podía ser más fácil.
Pero sólo conseguía una especie tarta redonda de varas inconexas, como un paraguas abierto visto desde arriba
Ja, ja, ja, ja,
Después de convertir las polares hasta en microsegundos por parsec cuadrado caí en la cuenta de que estaba trabajando en Delphi, tiré de la ayuda y ¡¡¡ vean y pásmense !!!
Yo empecinado en pasarle a las funciones Seno() y Coseno() los ángulos en Grados Sexagesimales y él tomándolos como Radianes. Como los radianes varían solo entre 0 y PI y yo le estaba metiendo valores de ángulo entre 0 y 90 él generaba toda la gama completa de direcciones posibles, y de ahí las vueltas y vueltas ...
Así que mis ...
Scan[i].Xcm := Scan[i].Distance * Cos(Scan[i].Angle);
Scan[i].Ycm := Scan[i].Distance * Sin(Scan[i].Angle);
se han tenido que convertir en :
Scan[i].Xcm := Scan[i].Distance * Cos(DegToRad(Scan[i].Angle));
Scan[i].Ycm := Scan[i].Distance * Sin(DegToRad(Scan[i].Angle));
.... arda mil millones de años en el infierno el que inventó los radianes. Ja, ja, ja, ja
Bueno ahora me sale ya correcto pero aún no tengo el vértice de medida ubicado en el centro abajo del fondo verde fósforo y con su recorrido equilibrado a izquierda y derecha.
En cuanto lo tenga os lo pongo aquí.