Kuaternion Normalleştirme Hesaplayıcı

Kuaterniyonunuzun w, x, y ve z bileşenlerini girin.

Nasıl hesaplanır?

Dört bileşeni sırayla skaler kısım w, sonra x, y, z olarak girin. Araç n = √(w² + x² + y² + z²) normunu hesaplar ve her bileşeni buna bölerek birim kuaterniyonu (w÷n, x÷n, y÷n, z÷n) verir. Birim kuaterniyon ve norm dört ondalıkla gösterilir. Ayrı bir satır, girdinin zaten 1 uzunlukta olup olmadığını söyler; bu, milyarda bir tolerans ile değerlendirilir. Yani 1,00000001 gibi bir değer, görünen büyüklük 1,0000 olsa da birim değil diye bildirilir. Bileşenlerin işaretleri korunur; tamamı sıfır olan kuaterniyonun yönü olmadığından sonuç çıkmaz. Yalnızca uzunluk değişir, eksen değişmez.

Örnek hesaplama

q = (1, 2, 3, 4) alalım. Kareler: 1 + 4 + 9 + 16 = 30, dolayısıyla büyüklük √30 = 5,4772. Her bileşeni 5,4772'ye bölünce w = 0,1826, x = 0,3651, y = 0,5477, z = 0,7303 bulunur. Araç (0,1826, 0,3651, 0,5477, 0,7303) gösterir. Kontrol: 0,1826² + 0,3651² + 0,5477² + 0,7303² yaklaşık 1,0000 eder. Araç ayrıca girdinin birim uzunlukta olmadığını da bildirir, çünkü 5,4772, 1 değildir.

Bu örneği dene →

Sık yapılan hatalar

  • Bileşenleri x, y, z, w sırasıyla yazmak. Bu araç önce w bekler; w'yi sonda saklayan bir kütüphaneden değer alıyorsanız yapıştırmadan önce yerini değiştirin.
  • Dönüşü doğrudan açı ve eksen olarak girmek. Kuaterniyonda w için cos(θ÷2), x, y, z için sin(θ÷2) ile eksenin çarpımı gerekir; ham açı değil.
  • Yalnızca vektör kısmını (x, y, z) normalleştirmek. Uzunluğa w da dahildir; dört bileşen de aynı norma bölünür.
  • q ile −q'nun farklı dönüşler olduğunu sanmak. İkisi aynı yönelimi tarif eder; normalleştirme girdiğiniz işareti korur.
  • (0, 0, 0, 0) değerini normalleştirmeye çalışmak. Sıfır kuaterniyonun yönü yoktur, bu yüzden sonuç çıkmaz.

Bu hesaplama hakkında

Bir kuaterniyon (w, x, y, z), 3B bir dönüşü ancak birim kuaterniyon olduğunda — yani büyüklüğü tam olarak 1 olduğunda — doğru temsil eder. Ardışık dönüş çarpımları sırasında biriken kayan nokta yuvarlama hataları, kuaterniyonun uzunluğunu yavaş yavaş 1'den uzaklaştırır ve bu da temsil ettiği dönüşü bozar; normalleştirme, her bileşeni yeniden ölçekleyerek bu sorunu düzeltir.

Büyüklük |q| = √(w² + x² + y² + z²) formülüyle bulunur; normalleştirme ise her bileşeni bu büyüklüğe böler: q̂ = (w/|q|, x/|q|, y/|q|, z/|q|). Sonuç, büyüklüğü tam olarak 1 olan ve sayısal kaymadan arındırılmış aynı dönüşü temsil eden bir kuaterniyondur.

Oyun ve grafik programcıları, robotik mühendisleri ve havacılık-uzay mühendisleri, bir fizik veya animasyon döngüsünde her birkaç dönüş bileşiminden sonra kuaterniyonları yeniden normalleştirir — bu adımı atlamak, gerçek zamanlı simülasyonlarda 3B yönelimin yavaş yavaş “çarpılmasının” klasik bir nedenidir.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Bileşenler w, x, y, z sırasıyla, skaler önde okunur. Birçok kütüphane skaleri sonda saklar, sonuçları koda yapıştırmadan önce kontrol edin. Değerler dört ondalıkla gösterilir; tam hassasiyet için normalleştirmeyi kendi kodunuzda yapın. Bir kuaterniyon ile negatifi aynı dönüşü tanımlar. Yazılımınız hangi düzeni kullanıyor?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar