Quaternion ile Euler açıları arasındaki fark nedir? Gimbal lock nedir?

Cevap

Euler açıları, rotasyonu üç eksen etrafındaki ardışık dönüşler olarak tutar (Unity'de Inspector'daki X, Y, Z). İnsan için okunabilir ama iki ciddi sorunu vardır:

Gimbal lock

Eksenler sırayla uygulandığı için, ortadaki eksen 90 derece dönünce diğer iki eksen aynı düzleme hizalanır. Bu durumda bir serbestlik derecesi kaybedilir: iki farklı açıyı değiştirmek aynı dönüşü üretir ve bazı yönlere doğrudan dönmek imkânsız hâle gelir. Ör. uçak burnunu tam yukarı (pitch 90) kaldırınca yaw ve roll aynı etkiyi verir.

Interpolasyon sorunu

Euler değerleri arasında Lerp yapmak tuhaf yollar çizer ve 350'den 10 dereceye geçerken uzun yolu dolaşabilir.

Quaternion

Quaternion, rotasyonu bir eksen ve o eksen etrafındaki açı olarak 4 bileşenle (x, y, z, w) temsil eder. Bileşenler doğrudan açı değildir, elle düzenlenmez.

ÖzellikEulerQuaternion
OkunabilirlikYüksekDüşük
Gimbal lockVarYok
Yumuşak interpolasyonZorSlerp ile kolay
Rotasyon birleştirmeKarmaşıkÇarpma ile (q1 * q2)
Bellek3 float4 float
// Hedefe doğru bak
Quaternion look = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, look, 5f * Time.deltaTime);

// Rotasyonları birleştir: sıra önemlidir, çarpma değişmeli değildir
transform.rotation = transform.rotation * Quaternion.Euler(0, 90, 0); // yerel Y etrafında
transform.rotation = Quaternion.AngleAxis(45, Vector3.up) * transform.rotation; // dünya Y etrafında

// Quaternion ile vektör döndürme
Vector3 rotated = Quaternion.Euler(0, 30, 0) * Vector3.forward;

Pratik kural: Tasarımcı girişi ve gösterim için Euler, çalışma zamanındaki hesaplamalar için Quaternion kullanılır. transform.eulerAngles okunan değer her zaman yazılanla aynı olmayabilir (aynı rotasyonun birden fazla Euler karşılığı vardır), bu yüzden okuyup artırarak döndürmek hatalara yol açar.

  1. Vektörlerde dot product ve cross product oyunlarda ne için kullanılır?OrtaOyun MatematiğiGame Dev
  2. AABB ve sphere çarpışma testleri matematiksel olarak nasıl yapılır? Hangisi ne zaman tercih edilir?OrtaOyun MatematiğiGame Dev
  3. Transform matrisleri nedir? Local space ile world space arasında nasıl dönüşüm yapılır?OrtaOyun MatematiğiGame Dev
  4. Lerp ve Slerp nedir? Lerp'ü Update içinde yanlış kullanmak neden sorun yaratır?OrtaOyun MatematiğiGame Dev
  5. Vektör normalize etmek ne demektir? Çapraz harekette neden gereklidir?KolayOyun MatematiğiGame Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle