Döndürme Matrisleri, Ayrıştırma, Tersini Alma

Euler Açıları:

x-y-z koordinat sistemini X-Y-Z koordinat sistemi ile çakışık hale getirmek için arka arkaya uygulanacak üç dönme işleminde kullanılan α, β, γ açılarına Euler açıları denir. İç dönüşüm yöntemi ile adım adım:

Açı Tanımları:

  • Alfa: x ekseni ile N arasındaki açıdır. (x-y düzleminde)
  • Beta: z ile Z eksenleri arasındaki açıdır.
  • Gama: N ile X eksenleri arasındaki açıdır. (X-Y düzleminde)
Euler açıları diyagramı

Açılar için pozitif ya da negatif yön sağ el kuralı ile belirlenir. Sağ elin baş parmağı dönme ekseni pozitif yönüne bakarken diğer dört parmak pozitif dönme yönünü gösterir.

Euler açıları diyagramı

Döndürme matrisleri, Ayrıştırma, Tersini alma:

Arka arkaya uygulanan bu dönmeler ile bir koordinat sistemini herhangi başka bir sisteme çakıştırmak mümkün olur. Farklı bir bakış açısı ile ikinci sistem başta birinci sistem ile çakışıktır, ve ard arda üç dönme işlemi ile son halini alır.

Uçak dönme eksenleri

Uçakların kumandası için kullanılan:

  • Yuvarlanma (roll)
  • Yunuslama (pitch)
  • Sapma (yaw)

açıları da bir tür Euler açısıdır.

Katı cisimlerin uzaydaki konumunu tanımlamak için bu cisimleri kendi geometrilerine uygun yeri belirli bir koordinat sistemi ile eşleştirmek gerekir. Örneğin şekildeki uçağın simülasyonunu yapan bir yazılım, uçağın güncel koordinat sistemi ile başlangıçtaki koordinat sistemi arasındaki Euler açıları ve taşınma miktarlarını transformasyon matrisine çevirip, uçağın model dönüşümünü 4x4 homojen matrise göre yapar ve sahnede uçağı o anki konumunda çizdirir.

Uçağın konum zaman grafiğine göre koordinatları sürekli güncellenecektir. Diğer bir düşünceyle uçağa iliştirildiğimiz koordinat sistemi değişecektir. Bu değişimi ifade etmenin en kolay yolu koordinat sistemine ait merkez noktasını ve 3 tane Euler açısını vermek olabilir.

Dikkat edilmesi gereken nokta şudur: Konumu değişen koordinat sistemi başlangıçta mutlak koordinat sistemi olarak düşündüğümüz referans ile çakışık olur. Sonrasında ilk önce z eksenindeki dönme uygulanır. Ardından N (düğüm çizgisi) etrafındaki β ile rotasyon ve üçüncü olarak Z ekseni etrafında rotasyon yapılır. Bütün dönmelerde pozitif negatif ayrımı sağ el kuralına uyar. Dönmeler sonucunda eksenler doğru oryantasyona ulaşır. Merkez noktanın taşınma işi bundan sonra gerçekleştirilir. 3 dönme ve 1 taşıma işlemi ile uçağın sanal dünyadaki veya gerçek dünyadaki koordinatları (3 pozisyon, 3 açı) olarak mutlak, değişmeyen bir referans sisteme göre hesaplanabilir.

Döndürme Matrisleri, Ayrıştırma, Tersini Alma

İç ve Dış Dönüşüm Metodları

Arka arkaya uygulanan Euler dönmeleri için iki farklı metod vardır. İç ve dış dönüşüm (intrinsic – extrinsic) rotations. Şu ana kadar anlatılan açılar iç dönüşüm (intrinsic) sistem olarak isimlendirilir.

İç Dönüşüm (Intrinsic)

Dönme işlemleri hareketli koordinat sistemine göre yapılır.

Dış Dönüşüm (Extrinsic)

Açılar hiç değişmeyen x-y-z ana referans sistem doğrultularında verilir.

Yukarıdaki uçak örneğinde ise uçağın referansı değiştikçe dönme eksenleri de değişir. Mesela sapma (yaw ya da head) açısı doğal olarak yeni pozisyonunda alınır. Head açısının uçağın rotasını kumanda etmek için kullanıldığı düşünülürse bunu direksiyon açısı gibi modellemek çok da yanlış olmaz.

İç dönüşüm olsun dış dönüşüm olsun uygulama sırası dönme işlemlerinde çok önemlidir. Farklı sıralamalar ile aynı sonuç alınmaz.

R(α, β, γ) = R(γ) x R(β) x R(α)
Dönme açıları diyagramı

Döndürme Matrisleri, Ayrıştırma, Tersini Alma

Matris Tersini Alma

\[M \times P_1 = P_2\] \[M^{-1} \times M \times P_1 = M^{-1} \times P_2\] \[I \times P_1 = M^{-1} \times P_2\] \[P_1 = M^{-1} \times P_2\]

Yukarıda tersi alınan M matrisi dönme, taşıma, ölçekleme gibi bir çok işlemin arka arkaya uygulanmasını içeren 4x4 bir kare matris olabilir. Bir noktayı bu matris ile dönüştürüp elde ettiğimiz yeni noktayı tekrar eski haline dönüştüren matris M nin tersini hesaplayarak elde edilebilir. Kare matrislerin tersini hesaplamak için veya çok bilinmeyenli denklemleri çözmek için lineer cebir kuralları kullanılır. Gauss-Jordan eleme, LU decomposition, Cramer yöntemi gibi nümerik çözüm algoritmaları ile sonuç elde edilebilir.

\[M = T(t)R(\theta)\] \[M^{-1} = R(-\theta)T(-t)\]

Yukarıda anlatılan yöntem en genel ve hesaplama maliyeti yüksek bir ters hesaplama yöntemidir. Arka arkaya uygulanan bir dizi dönme ve taşıma işleminin sonucu oluşan M matrisinin tersini almak için yukarıdaki gibi hesaplama yapılabilir.

Ortogonal olduğu bilinen bir matris için:

\[M^{-1} = M^T\]

Matrisin tersi transpoze ile aynıdır. Dönme matrisleri ortogonaldir. (arka arkaya yapılan bir dizi dönme sonucu oluşan her dönme matrisi)

Ortogonal matris demek satır ve sütunları birbirine dik olan birim vektörlerden oluşan matris demektir.

Döndürme Matrisleri, Ayrıştırma, Tersini Alma

Transpoze işlemi ise bir matrisin satır ve sütunlarını yer değiştirerek yeni bir matris elde etme işlemidir.

\[ O = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 \end{bmatrix} \] \[ O^{-1} = O^T = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & -1 & 0 \end{bmatrix} \]

O matrisi ortogonaldir, satırlar bibirine dik birim vektörlerdir. Aynı şekilde sütunlarda birbirlerine dik birim vektörlerden oluşur.

Döndürme Matrisleri, Ayrıştırma, Tersini Alma

Matris Ayrıştırma (Matrix Decomposition)

Bir dönüşüm matrisi arka arkaya uygulanan pek çok farklı çarpım ile elde edilebilir. İşlem tarihçesini bilmediğimiz fakat toplam dönüşümü ifade eden matrisi bildiğimiz zaman, sıralı işlemleri ayrı ayrı bulmaya ayrıştırma (decomposition) denilir.

Buna şu sebeplerden ihtiyaç duyabiliriz:

  • Sadece ölçekleme miktarını elde etmek istiyorsak
  • VRML (virtual reality mark up language) 4x4 matrislerle çalışmak yerine transformasyon düğümleri içerir. Tek bir matrisi bu dilde bir dizi transformasyon düğümüne çevirmek gerekebilir.
  • Dönüştürülen modelimiz sadece katı cisim dönüşümleri mi geçirmiş anlamak isteyebiliriz.
  • Bir animasyon için adım adım dönüşüm matrisleri verildiğini düşünün. Bu adımlar arasında kalan frameleri canlandırmak için enterpolasyon gerekecektir. Bunun için dönme, taşıma gibi bileşenleri ayırmak faydalı olur.
  • Dönme matrisinden kesme bileşenlerini kaldırmak istiyorsak.

Döndürme Matrisleri, Ayrıştırma, Tersini Alma

Katı Cisim Dönüşümü (Rigid-Body Transform)

Örnek olarak gömlek cebinizde duran bir kalemi alıp masaya koyduğunuz vakit kalemin katı cisim dönüşümü geçirdiğini söyleyebiliriz. Kalemin kendi içinde şekli değişmez ama pozisyonu ve oryantasyonu değişir. Katı cisim dönüşümü taşıma ve dönme bileşenlerinden ibarettir. Ölçekleme, kesme, aynalama gibi işlemler cismin şeklini etkiler.

\[X = T(t)R = \begin{bmatrix} r_{00} & r_{01} & r_{02} & t_x \\ r_{10} & r_{11} & r_{12} & t_y \\ r_{20} & r_{21} & r_{22} & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}\]

Katı cisim dönüşümlerine ait matrislerin dönme ve taşıma bileşenlerini ayrıştırmak çok zor olmaz, yanda görülen matriste dönmeye ve taşımaya ait sayılar doğal olarak birbirinden ayrılırlar. İşin içine ölçekleme, kesme gibi işlemler dahil olunca ayrıştırma biraz daha zorlaşır.

Literatürde bu problemin çözümü için yöntemler sunulmuştur:

Thomas, Spencer W. Decomposing a matrix into Simple Transformations. James Arwn, Graphics Gems II Academic press

http://www.graphicgems.org

Döndürme Matrisleri, Ayrıştırma, Tersini Alma

Referanslar

Real-Time Rendering 2nd Edition (Tomas Akenine-Möller, Eric Haines, A K Peters Natick)