Ao usar o CMDevicemotion, se o dispositivo estiver em linha reta (pitch= 90), é realmente instável.Alguma maneira de resolver isso?

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

  •  11-12-2019
  •  | 
  •  

Pergunta

Eu conheço o sistema de coordenadas (Pitch, Yaw, Roll) tem sua própria falha matemática - sábio. No entanto, eu realmente espero que algo ou derivado dessas coordenadas possa ser uma alternativa.

O que eu estou tentando fazer é mover o dispositivo (digamos que seja um iPhone) no mundo real e tentando descobrir o guincho e o tom em relação ao olho do usuário. Assim, a gama de yaw deve ser (-180, 180) e a gama de pitch deve ser (-90, 90). Enquanto eu move o iPhone (sempre de frente para mim) de baixo para frente, o cmdevicemotion me dá mudanças de lançamento de 0 a 90 e enquanto eu movo o iPhone (ainda de frente para mim) da frente ao topo, o cmdevicemotion me dá mudanças de inclinação de 90 de volta Para 0. Estes são bons e estou perfeitamente feliz com dados de pitch.

No entanto, quando o tom está perto de 90, o ua é muito instável e instável. Será que isso não é o problema porque posso ignorar a mudança na guinada quando o tom é por volta dos 90. No entanto, o problema real é que o valor da guinada muda drasticamente antes do tom aumentando e após o tom diminuindo. Quero dizer, não é apenas instável, mas a média muda! muda algo como 180 (pi). Eu acho que é porque a coordenada totalmente muda. Mas estou perdido na coordenada transferindo agora.

Foi útil?

Solução

Esta solução desarrumada você acabou de descrever é exatamente a razão pela qual você não deve usar rolo, pitch e yaw.

Você vai nesta estrada ainda mais e tornar a bagunça maior ou use matrizes de rotação ou quaternões .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top