Geometrik Dönüşümler

Matematik |

Üç boyutlu geometriyi anlayabilmek için üzerinde çalışmak gerekir. Yüzyıllardır gelişen matematik bilgimizi esasında geometriye borçluyuz. Bilgisayar grafikleri ile çalışabilmek için başlangıç niteliğinde olacak bu yazımda temel geometrik dönüşümler üzerinde duracağım.

Uzaydaki bir noktayı kartezyen koordinat sisteminde konumlandırabilmek için edebilmek için noktanın birbirine dik üç eksene olan mesafesine ihtiyaç vardır.

Bilgisayar grafiklerinde işlerimizi genelde matrislerle ve vektörlerle yaparız. Vektör doğrultusu, yönü ve büyüklüğü belli olan bir niceliktir. Matematikte, uzaydaki iki noktanın birbirine olan mesafelerini ifâde etmeye yarar. Ek olarak fizikte de, bir hızı, kuvveti ya da ivmeyi ifâde edebilir.

5 temel dönüşüm şu şekildedir: Öteleme, dönme, ölçeklendirme, eğme, yansıma.

NOT

Dönüşümler genellikle matris formunda ifâde edilir. Bunun sebebi matrisler aracılığıyla tüm dönüşümlerin kolayca birleştirilebilmesidir.

Öteleme

Geometrik bir dönüşüm, koordinat sistemini ya da nesnenin koordinat sistemindeki konumunu, biçimini değiştirmek demektir.

İki boyutta dönüşümü inceleyelim:

Geometrik dönüşüm
Dikdörtgenin ötelenmesi (1-2)

Görüldüğü gibi dikdörtgeni oluşturan 4 noktanın koordinatları eşit şekilde artırılmıştır. Buna öteleme (translate) denir.

Dikdörtgeni oluşturan herhangi bir noktayı \(P(x,y)\) şeklinde sembolize edebiliriz. Bu nokta 2. durumda \(P'(x',y')\) noktasına ötelenmiştir. İlk durumda noktayı \(P = \begin{bmatrix}x \\ y\end{bmatrix}\) şeklinde gösterelim. Son durumda nokta şu hâle gelecektir:
\(P' = \begin{bmatrix}x' \\ y'\end{bmatrix} = \begin{bmatrix}x + T_x \\ y + T_y\end{bmatrix}\)

Dönme

Geometrik dönüşüm
Vektörün α açısıyla döndürülmesi

Şekilde, \(u(x,y)\) vektörünün \(u'(x',y')\) vektörüne dönüşümü gösterilmektedir. Vektör, orjine göre \(α\) açısıyla döndürülmüştür. Bu dönüşüm dönme (rotate) olarak adlandırılır.

Kısacası vektöre dönme işlemi uygularken şekli aynı kalır, yönü değişir.

\(u\) vektörünün bileşenleri

\(x = r.cos\beta\) ve \(y = r.sin\beta\)

\(u'\) vektörünün bileşenleri

\(x' = r.cos(\beta + \alpha)\) ve \(y' = r.sin(\beta + \alpha)\)

Aynı zamanda \(u'\) vektörünün bileşenleri trigonometrik dönüşüm yapılarak şöyle de yazılabilir:

\(x' = r.cos(\beta + \alpha) = r.cos\beta.cos\alpha - r.sin\beta.sin\alpha\)
\(y' = r.sin(\beta + \alpha) = r.cos\beta.sin\alpha + r.sin\beta.cos\alpha\)

burada \(r.cos\beta\) gördüğümüz yere \(x\) ve \(r.sin\beta\) gördüğümüz yere \(y\) yazarsak son olarak bileşenler şu hâle gelir:

\(x' = x.cos\alpha - y.sin\alpha\)
\(y' = x.sin\alpha + y.cos\alpha\)

Sonucu vektör formuna getirelim:

\(u' = \begin{bmatrix}cos\alpha & -sin\alpha \\sin\alpha & cos\alpha\end{bmatrix}.\begin{bmatrix}x \\ y\end{bmatrix}\)

Ölçeklendirme

Bir nesnenin boyutlarını değiştirmek için ölçeklendirme dönüşümü kullanılır. Ölçeklendirme dönüşümü, orjinal koordinatların ölçeklendirme katsayıları ile çarpılması ile yapılır.

Geometrik dönüşüm
Üçgenin ölçeklendirilmesi (1-2)

Örnekte görüldüğü üzere noktaların \(x\) bileşenleri 1.5, \(y\) bileşenleri 2 ile çarpılmıştır.

Bu örnekteki herhangi bir noktayı da \(P = \begin{bmatrix} x \\ y \end{bmatrix}\) şeklinde ifâde edebiliriz.

Ölçeklendirme dönüşümü matrisi ile çarpıldığında ise sonuç:

\(P' = P.S = \begin{bmatrix} x \\ y \end{bmatrix} . \begin{bmatrix} S_x & 0 \\ 0 & S_y \end{bmatrix} = \begin{bmatrix} S_x.x \\ S_y.y \end{bmatrix}\)

DİKKAT

Örnekteki basit ölçeklendirme dönüşümünde noktalar dolaylı yoldan ötelenmektedir. Bu durum istenmiyorsa fixed-point scaling, yani sabit nokta ölçeklendirmesi yapılmalıdır.

Eğme

Eğme dönüşümü iki şekilde uygulanabilir. X ekseninde eğme X-Shear, Y ekseninde eğme Y-Shear olarak adlandırılır. X ekseninde eğme yapılırken Y değerleri korunur, Y ekseninde eğme yapılırken de X değerleri korunur.

Geometrik dönüşüm
X ekseninde eğme
Geometrik dönüşüm
Y ekseninde eğme

X-Shear ve Y-Shear için dönüşüm matrisleri şöyle yazılır:

\(X_{sh} = \begin{bmatrix} 1& 0& 0\\ sh_x& 1& 0\\ 0& 0& 1 \end{bmatrix}, Y_{sh} = \begin{bmatrix} 1& sh_y& 0\\ 0& 1& 0\\ 0& 0& 1 \end{bmatrix}\)

Yansıma

Yansıma, objenin aynadaki görüntüsüdür. Yansıma dönüşümünde, obje sanki üç boyutta ve bir eksen etrafında 180° döndürülüyormuş gibi düşünülebilir. Yansıma bir referans eksene ya da noktaya göre yapılabilir.

Geometrik dönüşüm
X eksenine göre yansıtma

Geometrik dönüşüm
Y eksenine göre yansıtma

Geometrik dönüşüm
Herhangi bir noktaya (şekilde orjine) göre yansıtma

Dönüşüm matrisleri ise sırayla X Ekseni, Y Ekseni ve Orjin'e göre:

\(X_R = \begin{bmatrix} 1 & 0\\ 0 & -1 \end{bmatrix}, Y_R = \begin{bmatrix} -1 & 0\\ 0 & 1 \end{bmatrix}, O_R = \begin{bmatrix} -1 & 0\\ 0 & -1 \end{bmatrix}\)

Matrislerde çarpım işlemi komütatif (yer değiştirilebilen) değildir.
\([A].[B] \neq [B].[A]\)

Bu nedenle dönüşüm matrislerinin çarpım sırası değiştiğinde farklı sonuçlar verir.