J'essaie d'écrire une application de réalité augmentée. J'utilise la boussole, le gyroscope et les coordonnées GPS pour créer des superpositions. Tout fonctionne très bien, sauf lorsque l'utilisateur quitte le mode portrait. Devrait juste être un problème de trig simple que je ne peux pas comprendre.La trigonométrie de l'iPhone pour traiter l'orientation
Pour déterminer si une coordonnée est dans le champ de vision, j'utilise une valeur d'azimut et d'inclinaison du point central de l'iPhone qui est calculée au début du programme. L'azimut est défini comme mouvement gauche et droit lorsque le téléphone est orienté vers le haut, et l'inclinaison est le mouvement de haut en bas lorsque le téléphone est orienté vers le haut. Je mets à jour cette valeur avec les données du gyroscope et de la boussole lors de la mise à jour. Donc, si je mets correctement à jour l'inclinaison et l'azimut du point central, tout devrait fonctionner.
Le problème est que lorsque l'iPhone est tourné, sa définition de l'azimut et l'inclinaison restent les mêmes, par rapport au téléphone. Donc, l'inclinaison est toujours définie comme jusqu'au sommet du téléphone, même si le téléphone est sur le côté.
Ce que j'ai essayé était de faire quelque chose comme ceci:
self.centerPoint.azimuth = (degToRad(angleX)*cosZ) + (degToRad(angleY)*sinZ);
self.centerPoint.inclination = (degToRad(angleY)*cosZ) + (degToRad(angleX)*sinZ);
où degToRad (x) convertit de degrés en radians, COSZ et Sinz sont les cos et sin du z-angle du gyroscope respectivement, et angleX et angleY sont les angles x et y du gyroscope. L'angle X du gyroscope mesure l'angle haut-bas, l'angle Y mesure l'angle gauche-droite et l'angle Z mesure la rotation du téléphone du mode portrait au mode paysage.
Cela ne semble pas fonctionner. Quand je tourne le téléphone sur le côté, l'inclinaison augmente considérablement. Y a-t-il des gens qui peuvent aider?
Je dois ajouter que normalement, en ne considérant que l'orientation portrait, j'ai utilisé: azimut = degToRad (angleX) et inclinaison = degToRad (angleY). Cela fonctionne pour l'orientation portrait. Je devrais juste devoir multiplier ceci par un certain facteur pour expliquer l'angle différent.
Site Apple Stack Exchange? – Shoe
Non, c'est une question de programmation, pas une question de logiciel Apple. –