Yazan : Şadi Evren ŞEKER

Bilgisayar grafiklerinde kullanılan ve bir şeklin değişmesine (transformation) yarayan matrisleri üç grupta toplayabiliriz:

İçerik
Taşıma işleminin geri alınması
Döndürme işleminin geri alınması
Ölçekleme işleminin geri alınması
Örnek uygulama

Bu üç gruptaki matrislerin aynı zamanda tersini almak da mümkündür. Yani herhangi bir değişim işlemine maruz kalan şeklin geri dönüşerek ilk haline dönmesi ancak bu dönüşüm işleminin tersi olan matrisin dönüşmüş şekle uygulanması ile mümkündür. Bu işlemi üç alt başlıkta yukarıdaki dönüşüm işlemlerinin sırasıyla inceleyeceğiz.

Taşıma işlemi ve tersinin alınması

Taşıma işlemi için kullanılan dönüşüm matrisi aşağıdaki şekildedir:

Bu matris ile

P’ = T x P

matris çarpım işlemi yapıldığında P’ değerini veren yeni nokta için

x’= tx + x

y’= ty +y

sonucu çıkar. Buradaki tx ve ty değerleri sırasıyla x ve y eksenlerindeki hareketi göstermektedir.

İşlemin geri alınabilmesi için yukarıdaki matrisin tersi olan aşağıdaki matris ile taşınmış noktanın çarpılması mümkündür:

terstasima

Yukarıdaki yeni matrise T’ dersek aşağıdaki eşitlikler doğru olur:

P’ = T x P -> P = T’ x P’

P = T’ x T x P

görüldüğü üzere T’ x T çarpımı birim matrisi (identity matrix) vermektedir ve bir martir önce T sonra T’ ile çarpıldığında ilk haline dönmektedir.

Bu durumu işleme dökerek deneyelim:

P’ = T x P işlemini yapacak olursak

tx + x
ty + y
1

matrisini elde etmiş oluruz. Bu yeni matrisi (yani P’ noktasını) T’ matrisi ile çarpalım:

x = tx + x – tx

y = ty + y – ty

sonucunu bulmuş oluruz ve yukarıdaki işlem sonucunda

x = x

y = y

şeklinde ilk koordinatlara dönmek mümkündür.

Döndürme işleminin geri alınması

Taşıma işlemine benzer şekilde döndürme işleminin de geri alınması mümkündür. Bunun için aşağıdaki dödürme matrisinin:

tersinin alınması gerekir.Yukarıdaki matrisin tersi aşağıda verilmiştir:

tersdondurme

Yukarıdaki bu iki matrisin birbirinin tersi olduğunu yine işlem üzerinde görelim. Öncelikle ilk dönüşüm matrisimizi herhangi x y koordinatlarına sahip bir P noktası üzerinde uygulayalım

P’ = T x P

işlemini yapacak olursak :

x= x cosθ – y sinθ

y= x sinθ + y cosθ

şeklinde yeni koordinat değerlerini elde etmiş oluruz. Şimdi bu yeni koordinat değerleri üzerinde ters dönüşüm matrisimizi uygulayalım. Yani

x cosθ - y sinθ
x sinθ + y cosθ
1

matrisi ile yukarıdaki ters dönüşüm matrisini çarpalım. Sonuçta aşağıdaki değeri elde ederiz:

x = (x cosθ – y sinθ)cosθ + (x sinθ + y cosθ) sinθ

y = -(x cosθ – y sinθ)sinθ + (x sinθ + y cosθ)cosθ

Yukarıdaki bu işlemleri ilerletecek ve çarpanları parantez içerisine dağıtacak olursak:

x = (x cosθcosθ – y sinθcosθ) + (x sinθsinθ + y cosθsinθ)

y = -(x cosθ sinθ- y sinθsinθ) + (x sinθcosθ + y cosθcosθ)

parantezleri açıp toplama işlemlerini yaparsak

x = x cosθcosθ – y sinθcosθ + x sinθsinθ + y cosθsinθ

y = –x cosθ sinθ+ y sinθsinθ + x sinθcosθ + y cosθcosθ

sonuçları ortak paranteze alırsak

x = x( cosθcosθ+sinθsinθ )

y = y (sinθsinθ+ cosθcosθ)

Trigonomterik kurallardan hatırlanacağı üzere cos2θ+sin2θ = 1 olur. Dolayısıyla aşağıdaki sonuca varılmış olur:

x = x

y = y

Görüldüğü üzere işlem geri alınmış ve θ açısı kadar döndürülmüş olan şekil geri döndürülmüş ve ilk değerini almıştır.

Ölçekleme işleminin geri alınması

Yukarıdaki taşıma ve döndürme işlemlerine benzer şekilde ölçekleme işlemi de geri alınabilir. Öncelikle ölçekleme matrisimizi hatırlayalım:

Yukarıdaki bu matrisin tersi alınacak olursa:

tersolcekleme

yukarıdaki matris bulunur. Bu matrisi de işlem ile deneyerek ters almada kullnılabileceğini görelim.

Öncelikle

P’ = T x P işlemini yapıp P’ noktasının koordinatlarını bulalım:

x’ = x sx

y’ = y sx

sonuçları bulunur. Bu sonuçların oluşturduğu

xsx
ysy
1

matrisini ters dönüşüm matrisimiz ile çarpalım. Sonuç aşağıdaki şekilde çıkacaktır:

x sx / sx
y sy / sy
1

Görüleceği üzere sx/sx = 1 ve sy/sy =1 değerleri yazılacak olursa

x = x

y = y

şeklinde ölçekleme işlemi geri alınmış olur.

Örnek

Yukarıdaki konunun daha iyi anlaşılabilmesi için aşağıdaki soruyu çözmeye çalışalım:

http://www.sadievrenseker.com/grafyaz/ucgen.jpg

Yukarıdaki şekilde bulunan (3,2) (3,3) (5,2) koordinatlarına sahip üçgen
ordinat (0,0 noktası) etrafında 45 derece (saat yönünün tersi istikametinde)
döndürülüyor. Ardından y = -x doğrusuna göre yansıması (reflection) alınıyor ve
tx = 2 ty=1 olacak şekilde taşınıyor. Son olarak şekil 2 katına çıkarılıyor
(büyütülüyor) yukarıdaki bu işlemler sonucunda üçgenin koordinatlarının ne
olacağını adım adım hesaplayınız. Yukarıdaki işlemleri geri alan matrisleri
yazıp bu matrisleri uyguladıktan sonra sonuçta üçgenin Orijinal noktalarına
geri dönüldüğünü gösteriniz. (sin45 = 0.7 ve cos 45 = 0.7 olarak alınız)

Çözüm:

Döndürme işlemi için kullanılan matris

Şeklindedir. Bu matris ile noktalarımız oluşturan
matrislerin (vektörlerin) çarpımı döndürülmüş nokta koordinatlarını verecektir.
Toplam 3 adet noktamız bulunuyor bunlar homojen koordinat olarak yazılacak
olursa:

N1:

N2:

N3:

Noktalarıdır. Her noktanın döndürülmüş halini bulmak için
döndürme (rotation) matrisi ile ayrı ayrı çarpıyoruz.

N1’:

N2’:

N3’:

Noktalarıdır. Bu noktaların oluşturduğu üçgen merkezden
geçen z ekseni etrafında 45 derece döndürülmüş üçgen olarak kabul edilebilir.

Yukarıdaki bu noktalardan oluşan üçgen çizilirse aşağıdaki
şekilde bir üçgen elde edilir:

Yukarıdaki üçgen dikkat edilirse ilk üçgenenin 450
döndürülmüş halidir.

Yukarıdaki üçgenin y=-x doğrusuna göre yansımasını alalım.
Bu yansıma için aşağıdaki dönüşüm matrisi kullanılmalıdır.

Matrisidir. Dolayısıyla 3 nokta ayrı ayrı yukarıdaki matris
ile çağrılacaktır.

Noktalarımız aşağıda verilmiştir.

N1’

N2’

N3’

Yukarıdaki noktalardan oluşan üçgenin y=-x doğrusuna göre
yansımasını alabiliriz. Bunun için bütün noktaları yansıma matrisi ille
çarpıyoruz:

N1’’:

N2’’:

N3’’:

Yukarıdaki üçgenin yansıması alınmış hali aşağıdaki temsili
resimde gösterilmiştir:

Yukarıdaki şekilde üçgenin yansıması alınmış hali
görülmektedir.

Taşıma işlemi için aşağıdaki dönüşüm matrisi kullanılabilir.

Bu genel matristeki tx=2 ve ty=1 olacak şekilde bütün
noktalarla çarpılır.

N1’’’:

N2’’’:

N3’’’:

Olarak bulunur.  Yeni noktalardan teşekkül eden üçgeni
aşağıdaki temsili resimde görmek mümkündür.

Son olarak soruda üçgenin iki misline çıkarılması
istenmiştir. Bu işlem için de aşağıdaki ölçekleme dönüşüm matrisi
kullanılabilir.

Sorumuzda şeklin 2 misline çıkarılması istendiği için sx = 2
ve sy = 2 olarak alınmalıdır. Bu dönüşüme göre nokta koordinatlarımız aşağıdaki
şekilde hesaplanabilir:

N1’’’’:

N2’’’’:

N3’’’’:

Yeni üçgenimiz aşağıdaki temsili resimde tasvir edilmiştir:

Resmin son hali ile ilk halini aynı şekilde gösterecek
olursak:

Yukarıdaki görüldüğü gibi üçgen 450 döndürülmüş ardından
y=-x doğrusuna göre yansıması alınmış ardından x=3 , y = 1 değerlerinde
taşınmış ve son olarak 2 misline çıkarılmıştır.

Sorunun ikinci kısmında bütün bu işlemlerin geri alınması
için ters dönüşüm matrislerinin kullanılması istenmiştir. Dönüşüm işlemlerini
sondan başa doğru geri alacak olursak son işlem olan ölçekleme ile başlamamız
gerekir. Ölçekleme işleminin ters dönüşüm matrisi aşağıda verilmiştir:

Sorumuzda şeklin 2 misline çıkarılması istendiği için sx = 2
ve sy = 2 olarak alınmalıdır. Bu dönüşüme göre nokta koordinatlarımız aşağıdaki
şekilde hesaplanabilir:

N1’’’:

N2’’’:

N3’’’:

Ölçekleme işleminden hemen önce taşıma işlemi yapılmıştır.
Bu işlemin geri alınması için taşımanın ters dönüşüm matrisi kullanılmalıdır:

Dönüşümün tersi için tx = 2 ve ty = 1 dönüşüm değerleri
yerine konulursa noktalar aşağıdaki şekilde hesaplanabilir:

N1’’:

N2’’:

N3’’:

Noktaları bulunmuş olunur.  Bu ters alma işleminden sonra
yansıma işleminin tersini alabiliriz. Yansıma dönüşümlerinin tersi yine
kendisidir bu durumda yansıma işleminde kullandığımız aşağıdaki matrisi yine
kullanır ve bulduğumuz nokta vektörleri ile çarparsak ters dönüşüm elde etmiş
oluruz.

Noktaların her birisi için çarpımları ve sonuçları aşağıda
verilmiştir

N1’:

N2’:

N3’:

Son olarak ilk başta uyguladığımız dönüşüm matrisi olan
döndürme işleminin tersini alarak orijinal şekli elde edebiliriz. Döndürme
işleminin tersi matris aşağıda verilmiştir:

Yukarıdaki matrisi son bulduğumuz noktalara uygulayalım:

N1’:

N2’:

N3’:

Yukarıdaki işlemler sonucunda elde edilen sayıların kusurlu
kısımlarının yuvarlanmış halleri görülmektedir. Bu kusur sin45 ve cos45
değerlerini 0.7 almaktan kaynaklanmaktadır aslında değer daha hassas alınırsa
hata miktarı azalır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir