Skip to content

Noktaların Transformasyonu

Bilgisayar grafiklerinde, noktaların ve düz çizgilerin dönüşümleri temel bir konudur. Bu derste 2D transformasyonları ve homojen koordinat sistemini öğreneceğiz.

Bilgisayar grafiğinde 3 boyutlu transformasyon aslında öteleme (translation) işlemini de kapsayabilmek için kullanılır.

Klasik 2x2 matris ile sadece döndürme, ölçekleme ve yansıma yapılabilir:

T=[abcd]T = \begin{bmatrix} a & b \\ c & d \end{bmatrix}

Sınırlama: Öteleme (translation) yapılamaz! ❌

Homojen koordinatlarda 3x3 matris kullanarak tüm transformasyonlar tek bir matris ile yapılabilir:

T=[abecdf001]T = \begin{bmatrix} a & b & e \\ c & d & f \\ 0 & 0 & 1 \end{bmatrix}

Burada:

  • a, b, c, d: Döndürme, ölçekleme, yansıma parametreleri
  • e, f: Öteleme (translation) parametreleri (x ve y yönünde)
  • Son satır [0 0 1]: Homojen koordinat sabitleyici
Özellik2x2 Matris3x3 Homojen Matris
Döndürme✅ Yapılabilir✅ Yapılabilir
Ölçekleme✅ Yapılabilir✅ Yapılabilir
Yansıma✅ Yapılabilir✅ Yapılabilir
Öteleme❌ Yapılamaz✅ Yapılabilir
BirleştirmeSınırlı✅ Tam destek

2D uzayda bir nokta P(x, y) vektör formu ile şu şekilde gösterilir:

P(x,y)=[xy]P(x, y) = \begin{bmatrix} x \\ y \end{bmatrix}

Genel transformasyon matrisi T şu şekilde tanımlanır:

T=[abcd]T = \begin{bmatrix} a & b \\ c & d \end{bmatrix}

Bir noktanın transformasyonu matris çarpımı ile gerçekleştirilir:

[xy]=[abcd]×[xy]=[ax+bycx+dy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \times \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy \end{bmatrix}

1. Nokta ve Doğru Dönüşümleri: Özel Durumlar

Section titled “1. Nokta ve Doğru Dönüşümleri: Özel Durumlar”

Transformasyon:

[xy]=[1001]×[xy]=[xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \times \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} x \\ y \end{bmatrix}

Sonuç: Hiçbir değişiklik olmaz (Identity - Birim matris)


Transformasyon:

[xy]=[a001]=[axy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} ax \\ y \end{bmatrix}

Sonuç: x kısmında uzama (x ekseninde ölçeklendirme)

Örnek: a=2 için
P(2,3) → P'(4,3)
x ekseni boyunca 2 kat genişleme

Transformasyon:

[xy]=[100d]=[xdy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & d \end{bmatrix} = \begin{bmatrix} x \\ dy \end{bmatrix}

Sonuç: y eksenine göre esneme (y ekseninde ölçeklendirme)

Örnek: d=0.5 için
P(2,4) → P'(2,2)
y ekseni boyunca yarıya inme

Transformasyon:

[xy]=[1001]=[xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} x \\ y \end{bmatrix}

Sonuç: Orijine göre simetri (esasen değişiklik yok ama orijin önemli)


Transformasyon:

[xy]=[a001]=[axy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & 0 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} ax \\ y \end{bmatrix}

Sonuç: x-y yönünde uzatma (x ekseninde uzama)


Orijine göre dönme için temel matrisler:

T90=[0110]T_{90} = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}

Keyfi bir noktaya göre dönme işlemi için üç adım:

  1. Önce noktayı orijine taşıma
  2. Dönürme işlemi
  3. Sonra geri taşıma

Adımlar örneklerle açıklanmıştır.


Tx=[1001]T_{x} = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Örnek:

  • P(3,2) → P’(3,-2)
Ty=[1001]T_{y} = \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}

Örnek:

  • P(3,2) → P’(-3,2)

Yansıma matrisleri verilmiştir. X eksenine, y eksenine veya y=x eksenine göre yansıma matrisleri açıklanmıştır.


X ve Y yönünde aynı veya farklı ölçekleme:

Tscale=[sx00sy]T_{scale} = \begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix}

Örnekler:

  • sx=2,sy=2s_x = 2, s_y = 2: Her yönde 2 kat büyütme
  • sx=0.5,sy=0.5s_x = 0.5, s_y = 0.5: Her yönde yarıya küçültme

Keyfi bir noktaya göre ölçeklendirme için:

  1. Ölçekleme merkezini orijine taşı
  2. Ölçekle
  3. Geri taşı

Ölçekleme matrisleri açıklanmıştır. Keyfi bir noktaya göre ölçeklendirme için de adımlar örneklerle detaylandırılmıştır.


5. 2 Boyutlu Öteleme ve Homojen Koordinatlar

Section titled “5. 2 Boyutlu Öteleme ve Homojen Koordinatlar”

Klasik 2x2 matrislerle öteleme (translation) yapılamaz! Bu yüzden homojen koordinatlar kullanılır.

2x2’lik Matrislerle Neden Öteleme Yapılamaz?

Section titled “2x2’lik Matrislerle Neden Öteleme Yapılamaz?”

Öteleme işlemi toplama gerektirir:

[xy]=[x+txy+ty]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} x + t_x \\ y + t_y \end{bmatrix}

Bu işlem, 2x2 matris çarpımı ile yapılamaz.

2D koordinatları 3x3’lük transformasyon matrislerinin kullanımını anlatmak için homojen koordinat düzlemine geçiş ve 3x3’lük transformasyon matrislerinin kullanımı gösterilmiştir. Matrisin son sütununun “H” değeri taşıması durumunda normalizasyon ihtiyacına değinilmiştir.

Homojen koordinatlarda bir nokta:

P(x,y)Ph(x,y,1)P(x, y) \rightarrow P_h(x, y, 1)

3x3 Transformasyon Matrisi:

T=[abtxcdty001]T = \begin{bmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{bmatrix}

Transformasyon:

[xy1]=[abtxcdty001]×[xy1]\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

Bu sayede öteleme, döndürme ve ölçekleme tek bir matris ile ifade edilebilir!


Not defterinde düzgün doğruların transformasyonu için örnekler verilmiştir.

A=[0115],B=[1113]A = \begin{bmatrix} 0 & 1 \\ 1 & 5 \end{bmatrix}, \quad B = \begin{bmatrix} 1 & 1 \\ 1 & 3 \end{bmatrix}

Adımlar:

AT=[0115]×[1113]=[13616]A \cdot T = \begin{bmatrix} 0 & 1 \\ 1 & 5 \end{bmatrix} \times \begin{bmatrix} 1 & 1 \\ 1 & 3 \end{bmatrix} = \begin{bmatrix} 1 & 3 \\ 6 & 16 \end{bmatrix} BT=[1113]×[1113]=[24410]B \cdot T = \begin{bmatrix} 1 & 1 \\ 1 & 3 \end{bmatrix} \times \begin{bmatrix} 1 & 1 \\ 1 & 3 \end{bmatrix} = \begin{bmatrix} 2 & 4 \\ 4 & 10 \end{bmatrix}
y
|
A' •
|
B' •
|
A •
|___________x

Doğru üzerindeki noktalar transformasyon sonrası yeni konumlarına hareket eder ancak düzgünlük korunur - yani doğru yine doğru kalır.



2x2:

[1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}

3x3 Homojen:

[100010001]\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

2x2:

[sx00sy]\begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix}

3x3 Homojen:

[sx000sy0001]\begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix}

2x2:

[1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

3x3 Homojen:

[100010001]\begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

2x2:

[1001]\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}

3x3 Homojen:

[100010001]\begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

2x2:

[0110]\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}

3x3 Homojen:

[010100001]\begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}

2x2: ❌ Yapılamaz

3x3 Homojen:

[10tx01ty001]\begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}

Bir sonraki derste şunları öğreneceğiz:

  • 3D transformasyonlar
  • Keyfi açılarda dönme (θ açısı)
  • Composite transformations (Bileşik dönüşümler)
  • Görünüm transformasyonları (View transformations)