Pour sûr, c'est un truc de maths très trivial pour certains d'entre vous. Mais: Quand je tourne une vue, disons commençant à 0 degrés et tournant vers l'avant 0,1, 1, 10, 100, 150, 160, 170, 179, 179,999, et continuant à tourner dans la même direction, cela arrive , pour le dire haut et fort: BANG !!!! BAAAAAAAAANNNNNGGGG !!!! -179,9999, -170, -150, -50, 0, 50, 100, 170, 179,99, et encore: BBBBAAAANNNGGG !!! -179,999, -170, -100, et ainsi de suite ... pour sûr que vous savez ce que je veux dire ;-)Comment résoudre ce problème de rotation?
Imaginez que vous conduisez sur une route et soudainement votre miles-o-meter saute négative comme ça. Vous avez paniqué, n'est-ce pas?
Et vous savez quoi? C'est TRES mauvais pour mon algorithme. J'ai aucune idée comment résoudre ce problème autrement qu'en cochant if-else-blocks si ma valeur est soudainement inversée. Quelque chose me dit que je dois regarder certaines fonctions mathématiques comme les ondes sinus et d'autres choses. Mais mes connaissances en maths sont incroyables.
Comment puis-je résoudre ce problème? J'essaie de calculer les distances entre les angles, c'est-à-dire que j'ai deux vues où l'une réside sur l'autre, et les deux sont pivotées. Et je veux calculer la rotation globale des deux vues. Cette petite chose mais folle détruit mes calculs dès que les valeurs passent soudainement de -179,99999 à 179,99999. Aussi je ne sais pas si un 180 existe ou si les choses s'échangent quelque part à fabsf (179,999999999999999999999) si vous savez ce que je veux dire.
Par exemple: Que faudrait -170 degrés moins 50 degrés? Eh bien, je pense à -220 degrés. Mais au lieu de tourner -170 - 50 je finis par obtenir cette valeur: 40 degrés.
Comment puis-je recevoir ce que j'attends, le -220 au lieu de 40, sans aucune sorte de permutation non sécurisée? Parfois, mon auto-swapper fonctionne, mais parfois ce n'est pas dû à des incprécisions de maths.
Édition: Je calcule les angles à partir de la propriété transform.rotation.z des couches de la vue.
Vous devriez être un peu plus clair sur l'origine de vos angles. Quelle partie de votre programme les calcule? –
ajouté Edit: Je calcule les angles de la propriété transform.rotation.z des couches de la vue –