Czworonoce są dobre do interpolacji między nimi. jak na razie dobrze.Czy mogę interpolować rotację z dwóch kwaternionów utworzonych z Yaw/Pitch/roll?
Jeśli mam grę sieciową, czy wystarczy przenieść rotację jako wektor3f, czy też powinienem użyć kwaternionu? Aby gra była płynniejsza, może zajść potrzeba interpolacji między ostatnio wysłanym rotacją a bieżącym.
Ale czy mogę interpolować rotacje między dwoma kwaternionami, które zostały utworzone z Yaw/Pitch/Roll?
Quaternion a = Quaternion.FromYawPitchRoll(x1,y1,z1);
Quaternion b = Quaternion.FromYawPitchRoll(x2,y2,z2);
a.Interpolate(b, value); // will this work correctly?
Powinieneś wspomnieć (jak to zrobił), że zwykły "lerp" w wielu wypadkach działa dobrze dla kwaternionów. –
Czytałem, że obroty Eulera nie są jednoznaczne, więc nie można ich interpolować. Przekształcenie ich w kwaternionie naprawdę czyni je jednoznacznymi, co wydaje mi się trochę nielogiczne. – codymanix
@codymanix: Być może, ale tak jest. Nie można też _używać kątów bezpośrednio.Ponieważ kwaterunki mają dodatkowy stopień swobody, unikają całego problemu z blokadą kardana, bez względu na to, co poprzednio reprezentowało, lub na co się później przekształca. Kąty Eulera -> kwaternion -> matryca jest całkowicie koszerna. –