Cuando se usa CMDEVICEmotion, si el dispositivo está recto (Pitch= 90), es realmente inestable.¿Alguna forma de resolver esto?

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

  •  11-12-2019
  •  | 
  •  

Pregunta

Sé que el sistema de coordenadas (Pitch, YAW, Roll) tiene su propio defecto matemático. Sin embargo, realmente espero que algo en su lugar o que se derive de estas coordenadas pueda ser una alternativa.

Lo que intento hacer es mover el dispositivo (digamos que es un iPhone) en el mundo real y tratando de descubrir la guiñada y el tono con respecto al ojo del usuario. Por lo tanto, debe ser el rango de la guiñada (-180, 180) y el rango de tono debe ser (-90, 90). Mientras muevo el iPhone (siempre orientado hacia mí) desde la parte inferior hasta la parte delantera, la cmdevicemotion me da cambios de tono de 0 a 90 y mientras muevo el iPhone (todavía que me enfrenta a mí) desde la parte delantera hasta la parte superior, el cmdevicemotion me da cambios de tono de 90 atrás a 0. Estos son buenos y estoy perfectamente feliz por los datos de tono.

Sin embargo, cuando el tono está cerca de 90, la guiñada es muy temblorosa e inestable. Will, este no es el problema porque puedo ignorar el cambio en la guía cuando el tono es alrededor de 90. Sin embargo, el problema real es que el valor de la guiñada cambia dramáticamente antes de aumentar el lanzamiento y después de la disminución del tono. Quiero decir, no solo es inestable sino también los cambios medios! cambia algo como 180 (pi). Supongo que eso es porque la coordenada cambia totalmente. Pero estoy perdido en la coordenada que se transfiere ahora.

¿Fue útil?

Solución

Esta solución desordenada que acabas de describir es exactamente la razón por la que no debe usar el rollo, el tono y la guiñada.

Usted va a este camino más lejos y haga el desorden más grande o Use matrices de rotación o cuaterniones .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top