Lorsque vous utilisez CMDevicemotion, si l'appareil est droit (pas= 90), il est vraiment instable.Quoi qu'il en soit pour résoudre ceci?

StackOverflow https://stackoverflow.com//questions/10665306

  •  11-12-2019
  •  | 
  •  

Question

Je sais que le système de coordonnées (pitch, yaw, roll) a sa propre faille mathématique-sage. Cependant, j'espère vraiment que quelque chose à la place ou dérivé de ces coordonnées peut être une alternative.

Qu'est-ce que j'essaie de faire est de déplacer l'appareil (disons que c'est un iPhone) dans le monde réel et essayant de comprendre la lacet et la hauteur concernant l'œil de l'utilisateur. Ainsi, la gamme de lacets devrait être (-180, 180) et la plage de hauteur devrait être (-90, 90). Pendant que je déplace l'iPhone (toujours face à moi) du bas à l'avant, la cmdevicemotion me donne des changements de hauteur de 0 à 90 et je déplace l'iPhone (toujours face à moi) de face en haut, la cmdevicemotion me donne des changements de hauteur de 90 dos Pour 0. Ce sont bien et je suis parfaitement heureux des données de hauteur.

Cependant, lorsque la hauteur est proche de 90, la lacet est très shaky et instable. Ce n'est pas le problème car je peux ignorer le changement de lacet lorsque la hauteur est d'environ 90. Toutefois, le problème réel est que la valeur de la lacet change de manière spectaculaire avant que la hauteur augmente et après la diminution de la hauteur. Je veux dire que ce n'est pas seulement fragile, mais la moyenne change! change quelque chose comme 180 (PI). Je suppose que c'est parce que la coordonnée change totalement. Mais je suis perdu sur la coordonnée qui transfère maintenant.

Était-ce utile?

La solution

Cette solution de contournement désordonnée que vous venez de décrire est exactement la raison pour laquelle vous ne devez pas utiliser de rouleau, de pitch et de yaw.

Vous partez sur cette route plus loin et faites le gâchis plus grand ou Utilisez des matrices de rotation ou des quaternions .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top