Yasal Uyarı: Ben profesyonel bir oyun programcısıyım ve çoğu gün quaternions kullanıyorum ama onlar bana kara büyü yakın. Ben nispeten matematikle evde yaşıyorum ama hayali sayılar beni her zaman karıştırdı. Kuatları faydalı olarak tedavi etme eğilimindeyim ve çarpmaları bir kereden fazla tersine çeviriyorum. Onları sınırlı bir başarıya sahip matrislerle yaptığım gibi düşünmeye çalışıyorum.
Neyse ....
Beni şaşırtan şey şu. Bir nesneyi yerel ekseni etrafında döndürmek istediğimde, döndürmesini uygulamak istediğim dönüşü temsil eden kuaterniyonla çarparım. Bu nedenle yerel alanda bir rotasyondur.
Şimdi onu dünya uzayındaki bir eksen etrafında döndürmek istersem, akıl yürütmem şu olurdu: Dünya uzayındaki dönüşü bir kuaterniyon olarak alın. Nesne döndürme işlemimin tersini bu kuaterniyonla çarp. Bu benim dünya rotasyonumu yerel alana getirecek. Rotasyonumu bu yeni kuaterniyonla çarp. ie: newRot = oldRot * (ters oldRot * worldRot)
Ancak, ne yapmam gerekir newRot = oldRot * (ters oldRot * worldRot) * oldRot.
Neden ters quat ile çarptıktan sonra hala uygulamadan önce kendi quat ile çarpmam gerekiyor? Mükemmel bir geçerli sebep olması gerektiğini biliyorum, ama bundan kurtulmam için sebep olamaz ve bu benim için çok sinir bozucu. Çeşitli SSS'leri ve ne olduğunu denedim, ama çoğu matematikte derinlere inerek benim için daha az netleştirdi.
Bana 5 yaşındaymışım gibi açıklayabilecek biri var mı?
I try to reason about them like I would with matrices
- o zaman doğru yoldasınız. Matrisleri kullanarak nesnenin eksenleri ve dünya eksenleri etrafında nasıl döneceğini anladıysanız, kuaterniyonları kullanarak da aynısını yapabilirsiniz. Çarpma sırası hem matrisler hem de kuaterniyonlar için aynıdır.