Ben bir fizikçiyim ve bazı programlama öğreniyorum ve matris / vektör formunda şeyler yazmak yerine dönüşler için kuaterniyonları kullanan birçok insanla karşılaştım.
Fizikte, kuaterniyonları kullanmamamızın çok iyi nedenleri vardır (ara sıra Hamilton / Gibbs / vb. Hakkında anlatılan tuhaf hikayeye rağmen). Fizik, açıklamalarımızın iyi bir analitik davranışa sahip olmasını gerektirir (bunun kesin olarak tanımlanmış bir anlamı vardır, ancak normal giriş sınıflarında öğretilenin çok ötesine geçen bazı oldukça teknik yollarla, bu nedenle herhangi bir detaya girmeyeceğim). Kuaterniyonların bu güzel davranışa sahip olmadığı ve bu yüzden kullanışlı olmadıkları ve vektörler / matrisler olduğu için onları kullanıyoruz.
Bununla birlikte, herhangi bir analitik yapı kullanmayan katı rotasyonlar ve açıklamalarla sınırlı olan 3B rotasyonlar, her iki şekilde de (veya birkaç başka şekilde) eşit olarak tanımlanabilir.
Genel olarak, bir X = (x, y, z) noktasının, X 2 = X ' 2 kısıtlamasına tabi olarak yeni bir X' = (x ', y', z ') noktasına eşlenmesini istiyoruz . Ve bunu yapan pek çok şey var.
Saf yol, sadece bunun tanımladığı üçgenleri çizip trigonometri kullanmak veya bir nokta (x, y, z) ile bir vektör (x, y, z) ve f (X) = X 'fonksiyonu arasındaki izomorfizmi kullanmaktır ve bir matris MX = X ', veya kuaterniyonlar kullanarak veya eski vektörün bileşenlerini başka bir yöntem kullanarak (x, y, z) T. [a, b, c) (x', y ', z ') vb.
Matematik açısından bakıldığında, bu açıklamaların tümü bu ortamda eşdeğerdir (bir teorem olarak). Hepsi aynı sayıda serbestlik derecesine, aynı sayıda kısıtlamaya vb. Sahiptir.
Öyleyse neden kuaterniyonlar vektörlere göre tercih edilir?
Gördüğüm olağan nedenler, gimbal kilidi veya sayısal sorunlar.
Gimbal kilit yok argümanı tuhaf görünüyor, çünkü bu sadece bir euler açıları sorunudur. Aynı zamanda sadece bir koordinat problemidir (tıpkı kutupsal koordinatlarda r = 0'daki tekillik gibi (Jacobian rütbesini kaybeder)), bu da sadece yerel bir problem olduğu anlamına gelir ve koordinatları değiştirerek, dejenerelikten dönerek çözülebilir. veya örtüşen iki koordinat sistemi kullanarak.
Bunların her ikisinin (ve herhangi bir alternatifin) nasıl uygulanacağını ayrıntılı olarak bilmediğim için sayısal konular hakkında daha az eminim. Bir kuaterniyonu yeniden normalleştirmenin bunu bir rotasyon matrisi için yapmaktan daha kolay olduğunu okudum, ancak bu yalnızca genel bir matris için geçerlidir; bir dönme, bunu önemsizleştiren ek kısıtlamalara sahiptir (bunlar dördeylerin tanımına dahil edilmiştir) (Aslında, aynı sayıda serbestlik derecesine sahip oldukları için bu doğru olmalıdır).
Öyleyse kuaterniyonların vektörlere veya diğer alternatiflere göre kullanılmasının nedeni nedir?