Bu sayfadaki yazılar
Sayfanın metni
Sayfa 35
Grafik Efektler için Matematik 3
Değişik kişiler bu iki yorum arasından farklı seçimler yapabilir. Siz hangisini seçerseniz seçin, sıralamanın önemli olduğunu unutmayın.
Neden
bütün bu matrislerle uğraşıyoruz
Artık bu soruyu cevaplayabiliriz. Hatırlarsanız amacımız pek çok nokta ile modellenmiş bir objeyi almak (bir oyundaki asker veya bir demodaki küpler) ve bir dönüşüm uygulayıp, yeni noktaların konumunu hesaplamaktı. Obje'deki nokta sayısı yüz binlerce olabilir. Biz n tane dönüşümü yüz bin tane noktaya uygulamak ve sonuçta yüz bin yeni noktayı hesaplamak istiyoruz.
Bunu da hızlı yapmak istiyoruz. Çünkü bunu hızlı yapamazsak frame rate'imiz düşecek.
İşte matrisler ve vektörler bize bunu en hızlı yapmanın yolunu sağlıyor. Biz eğer matrisleri kullanmıyor olsaydık, her dönüşümü tek tek bütün noktalara uygulayacak ve her dönüşümden çıkan sonuca bir sonraki dönüşümü uygulayacaktık. Eğer bir dönüşümü bir noktaya uygulama için geçen zaman t ise, bir dönüşümü yüz bin noktaya uygulamak yaklaşık 100000 t alacaktı. Bu işlemi 5 dönüşüm için tekrarlayınca 500000 t olacaktı.
Oysa matrisler (ve homojen dönüşümler) sayesinde önce matrisleri birbiri ile (doğru sırada) çarpıp dönüşüm matrisini tek bir matrise indirgeyebiliyoruz. Sonra da bu matrisi 100000 nokta ile çarpınca yaklaşık 100000t zamanda pek çok dönüşümü uygulayabiliyoruz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 34
Homojen dönüşümler
Ne yaptığımızı tekrar hatırlayalım:
1. Vektörleri “nx1” tipinde matrisler olarak gösteriyoruz. 2. Dönüşümleri “nxn” tipinde matrisler olarak gösteriyoruz. 3. Bir dönüşümü bir vektöre uygulamak için iki matrisi çarpıyoruz. O = Dönüşüm * P
Şimdi bu dönüşümden sonuç olarak çıkan Q vektörüne bir başka dönüşüm daha uygulasak
R = Dönüşüm2 x Q = Dönüşüm2 x ( Dönüşüm x P ) Birleşme özelliğini kullanırsak: R = (Dönüşüm2 x Dönüşüm) x P
Yani bunu genellersek şöyle diyebiliriz. Elimizde P noktası varsa ve biz bu noktaya n adet dönüşüm (D0, D1, D2, ... , Dn) uygulayacaksak
R-(DnxDn-1 x...xD2xDi)xP İşlemini yapabiliriz.
Yalnız bu işlemi yapabilmemiz için gereken bir koşul var. Uygulanan bütün dönüşüm matrislerinin aynı boyda kare matrisler olması ve vektörün de o boya uygun satır sayısı içermesi. İşte bu yüzden kare matrisler en çok kullanılırlar.
Demin baktığımız iki dönüşüm örneğinde “yer değiştirme” dönüşümü için vektörlere bir fazla eleman eklememiz gerekmişti. Diğer bütün kullanacağımız dönüşümlerde de aynı boyda matris kullanmamız gerektiği için onları da bir büyüteceğiz. Yani 2 boyutlu noktalar için:
1. 3x1'lik vektörler (son elemanı 1 olan)
2. 3x3'lük dönüşümler
3 boyutlu noktalar için ise:
1. 4x1'lik vektörler
2. 4x4'lük dönüşümler
Kullanılır.
Bu şekilde birbiriyle çarpılabilen ve uç uca eklenebilen dönüşümlere “homojen” dönüşümler deniyor.
Şimdi son olarak 3 temel dönüşümün 2 boyutlu vektörlerle kullanılırken aldığı 3x3'lük matris formlarına bir kez daha bakalım.
Dönüşümlerin uygulanış sırası
Dönüşümlerde sıralama önem taşır. Çünkü aynı dönüşümler farklı sırayla uygulandığında farklı sonuçlar verirler (hatırlayın, matris çarpımında değişme özelliği yoktur demiştik)
Bileşik dönüşümleri genellediğimiz formüle tekrar bakarsak: R = (Dn x ... x D2 x D1) x P
Bu işlemi iki türlü yorumlayabiliriz:
1. Burada P'ye en yakın olan dönüşüm yani D1 ilk olarak P'ye uygulanıyor. Bu dönüşümden sonra çıkan sonuca D2 uygulanıyor vs.
2. İkinci yol ise dönüşümleri “koordinat sistemine uygulanıyor” olarak düşünmektir. Yani normal koordinat sisteminden başlarsak, önce Dn ile yeni bir koordinat sistemine ulaşıyoruz, sonra o sisteme D2 uygulanıyor vs.
Koordinat sistemine dönüşüm uygulamak demek koordinat sistemini tanımlayan eksen birim vektörlerini (mesela iki boyutlu uzay için (1, 0) ve (0, 1)) alıp dönüşümlerle iki yeni eksen elde etmek demektir. Bu iki eksen yeni bir koordinat sistemi tanımlar.