Non è possibile ottenere imbardata, rollio e beccheggio da un vettore di direzione come il vettore di direzione dirà soltanto quale direzione guardare a (imbardata e beccheggio)
Per ottenere l'imbardata e beccheggio si utilizza la trigonometria - si Presumo avere alcune conoscenze di lavoro. Controlla this wiki page per alcuni diagrammi utili per visualizzare gli angoli.
Lasciando Y = imbardata, P = passo.
primo a ottenere Imbardando desideri:
tan(Y) = x/(-y)
Ora per ottenere passo:
tan(P) = sqrt(x^2 + y^2)/z
Per ottenere i valori effettivi per Y e P è necessario utilizzare inversa abbronzatura, I' Ho scritto sopra usando l'abbronzatura per rendere più chiara la derivazione.
Si noti che i segni meno dipendono da come si definiscono gli angoli e gli assi, ma si dovrebbe ottenere l'idea.
È quindi possibile impostare il rotolo su 0 o su qualsiasi altra cosa.
Grazie per il suggerimento. Ho appena iniziato a utilizzare OpenGL e non conoscevo questa funzione. Ho risolto usando questo. – Jack
Questa è una bella risposta, ma solo pratica per un sottoinsieme delle piattaforme comuni che forniscono GLU (ad esempio non necessariamente le piattaforme OpenGL ES) – jheriko