Ana içeriğe geç

Dönüşüm (Transformation) Matrisi

Dikkat

Eğer graphic notlarımı ilk defa okuyorsanız. İlk önce Giriş belgesini okumanızı tavsiye ederim.

Not
  • Kod örneklerinde, matris hesaplamaları için WebGL-Math kullanıldı.
    Başka bir seçenek olarak glMatrix de kullanılabilir.
  • Örnekler CSS transform özelliğinin matrix3d() fonksiyonu üzerinden verildi.

Öteleme (Translation)

Uzayda, bir noktayı T vektorü boyunca hareket ettirmek için kullanılır ve şu şekilde gösterilir:

[100Tx010Ty001Tz0001] \begin{bmatrix} 1 & 0 & 0 & \color{red}T_x\\ 0 & 1 & 0 & \color{green}T_y\\ 0 & 0 & 1 & \color{blue}T_z\\ 0 & 0 & 0 & 1\\ \end{bmatrix}

Örnekte nesne (50, -75, 0) vektörü ile öteleniyor.

Canlı Düzenleyici
Sonuç
Loading...

Döndürme (Rotation)

Uzayda, bir noktayı R ekseninde θ derece dönürmek için kullanılır.

Örnekte nesne Z ekseni boyunca 45° derece döndürülüyor.

Canlı Düzenleyici
Sonuç
Loading...

Ölçekleme (Scaling)

Uzayda, bir noktayı S vektorüne göre ölçeklemek için kullanılır ve şu şekilde gösterilir:

[Sx0000Sy0000Sz00001] \begin{bmatrix} \color{red}S_x & 0 & 0 & 0\\ 0 & \color{green}S_y & 0 & 0\\ 0 & 0 & \color{blue}S_z & 0\\ 0 & 0 & 0 & 1\\ \end{bmatrix}

Örnekte X ekseninde 1.5, Y ekseninde 0.75 katına çıkarılıyor. Z ekseninde ise aynı ölçekte kalıyor.

Canlı Düzenleyici
Sonuç
Loading...

Dönüşüm İşlemlerini Birleştirmek

İki dönüşüm matrisine, çarpım işlemi uygulanarak aynı dönüşümü yapan tek bir matris elde edilebilir.

Önemli
  • Matris çarpımının değişme özelliği yoktur.
  • Bu yüzden matrislerin çarpım sırasının değişmesi sonuçta çıkacak dönüşümü de değiştirecektir.
  • Dönüşümlerin nesneye uygulanma sıralaması, çarpım işlemlerinin sıralaması ile ters olacaktır.

Örnekte dönüşümlerin Ölçekleme, Döndürme ve Öteleme sıralaması ile uygulandığı görülüyor.
Çarma işlemlerini sırasını değiştirerek sonucun nasıl değiştiği görülebilir.

Canlı Düzenleyici
Sonuç
Loading...