I quaternioni sono utili per interpolare le rotazioni tra di loro. Fin qui tutto bene.Posso interpolare la rotazione da due Quaternions creati da Yaw/Pitch/roll?
Se ho un gioco in rete, sarà sufficiente trasferire la rotazione come vettore3f o dovrei usare un quaternione? Per rendere il gioco più fluido, potrei dover interpolare tra l'ultima rotazione inviata e quella corrente.
Ma posso interpolare le rotazioni tra due Quaternioni che sono stati creati da imbardata/passo/rotolo?
Quaternion a = Quaternion.FromYawPitchRoll(x1,y1,z1);
Quaternion b = Quaternion.FromYawPitchRoll(x2,y2,z2);
a.Interpolate(b, value); // will this work correctly?
Dovresti menzionare (come ha fatto @Justicle) che plain-ol 'lerp funziona bene per i quaternioni in molti casi. –
Ho letto che le rotazioni di Eulero non sono univoche, quindi non puoi interpolarle tra di loro. La loro conversione in quaternioni li rende davvero non ambigui, il che mi sembra un po 'illogico. – codymanix
@codymanix: Forse, ma è il caso. Non puoi nemmeno _utilizzare gli angoli di eulero direttamente.Poiché i quaternioni hanno un ulteriore grado di libertà, evitano l'intero problema con il blocco cardanico, indipendentemente dalla rappresentazione precedente o da ciò che viene convertito in seguito. Angoli di Eulero -> quaternion -> matrix è interamente kosher. –