J'aimerais transformer la lacet, la hauteur et le rouleau de l'iPhone du cadre du corps vers la cadre du monde, c'est-à-dire l'azimut, la hauteur et le rouleau. Sur Android, cela se fait facilement avec le Sensormanager.remapcoordinatesystem (), sensormanager.getOrientation Modes tels que Détails ici: http: / /blog.mysticleakesoftware.com/2009/07/sensor-celeromètre-Magnetics.html P>
sont des méthodes similaires disponibles pour l'iPhone ou quelqu'un peut-il me dire dans la bonne direction comment faire cette transformation? P>
merci p>
3 Réponses :
L'accéléromètre ( Si vous craignez que l'appareil puisse bouger, vous pouvez attendre plusieurs lectures d'accéléromètre dans une rangée presque la même. Vous pouvez également filtrer tout vecteur avec une longueur ± la tolérance (comme vous le définissez) de 1,0 p>
En termes plus généraux, l'appareil n'a aucun moyen de connaître son orientation, autre que par «gravité de sentiment», qui se fait via l'accéléromètre. Les défis que vous aurez sur le fait que l'accéléromètre ressent toute l'accélération, dont la gravité n'est qu'une source possible. P> uiaccéleuromètre code>) vous donnera un vecteur de la puce d'accéléromètre du périphérique directement vers le bas. Si vous pouvez supposer que l'appareil est tenu assez stable ( c'est-à-dire em> que vous ne lisez pas l'accélération du mouvement réel), vous pouvez utiliser Simple Trig (ACOS (), Asin ()) à déterminer l'orientation de l'appareil. p>
L'accéléromètre est suffisamment bon pour obtenir le vecteur de direction de gravité dans le système de coordonnées de périphérique. C'est dans le cas où le périphérique se calme. P>
L'étape suivante pour une orientation complète du périphérique consiste à utiliser cllouerManager code> et à obtenir le vecteur true North dans le système de coordonnées de périphérique.
Avec le vecteur de vecteur North North et Gravity normalisé, vous pouvez facilement obtenir toutes les autres directions à l'aide du produit DOT et Vecteurs croisés. P>
Si vous ciblez un appareil avec un gyroscope (iPhone 4 au moment de la rédaction), le CMMotionManager COD> peut vous fournir des mises à jour CMDevicemotion CODE>. Le cadre fait un bon travail de traitement des données du capteur brutes et de la séparation de la gravité code> et useracceleration code> pour vous. Vous êtes intéressé par le vecteur de gravité, qui peut définir le terrain et rouler avec un petit trig. Pour ajouter de lacet, (rotation du périphérique autour du vecteur de gravité), vous devez également utiliser CLLOCMOPERMANAGER du cadre de Corelocation pour obtenir des mises à jour de la rubrique Compass. P>