Grafik Efektler için Matematik
Retro bilgisayarVektör efektlerinin temelini oluşturan kavram çok boyutlu uzay geometrisidir. Bu karizmatik ada kanmayın aslında basit bir konudur. Bizim üzerinde çalışacağımız koordinat sistemleri birbirine dik eksenlerin oluşturduğu sistemler olacak. İlk olarak bu koordinat sistemlerinde yer alan vektörler ve onların üzerindeki basit bazı işlemlerden bahsedeceğiz. Ardından vektörler üzerinde dönüşüm adı verilen işlemlerden bahsedeceğiz.
Dönüşümler, yer değiştirme, döndürme ve ölçekleme olacak. Bu kavramları önce 2 boyutlu uzayda anlatacağım. Ardından 3 boyuta geçmemiz zor olmayacak.
İki boyutlu uzay Şekil 1'de görüldüğü gibi birbirine dik x ve y eksenlerinin ifade ettiği bir uzaydır. Bu uzayda her nokta bir x ve bir y koordinatı ile ifade edilebilir.

2 boyutlu uzayda eksenler
Şekil 1.
Bu uzayda noktaların x ve y koordinatları ile nasıl ifade edildiğine Şekil 2'deki örneklerden bakabilirsiniz. Koordinat sisteminde (0,0) noktası özel olarak adlandırılır. Bu noktaya origin denir.

örnek noktalar
Şekil 2.
Vektörler
Vektörler matematikte çok boyutlu değerlerdir. Bu ne demek? Matematikte büyüklükler skaler ve vektörel diye iki gruba ayrılır. Skaler değerler 3, 5, 12000, 42 gibi tek bir reel sayı ile ifade edilebilen değerlerdir. Vektörler ise çok boyutlu değerlerdir. Çok boyutlu bir uzayda bir yön ve büyüklük ifade ederler.
Vektörler en çok fizikte kuvvetleri, manyetik ve elektriksel alanları ifade etmekte kullanılırlar. Vektörleri çok boyutlu sayılar gibi düşünürseniz onlar üzerinde toplama çıkarma gibi işlemlerin de yapılabileceğini anlarsınız. Şekil-2'deki noktaları vektörler olarak da düşünebiliriz. Vektörler şemalarda gösterilirken bir ok olarak gösterilirler ve V1, V2, P, A gibi büyük harf ve rakamlarla isimlendirilirler. Ok olan uca baş, diğer uca kuyruk denir.
Şekil-3'te örnek vektörler görebilirsiniz. Unutmamanız gereken bir nokta var. Vektörleri ifade eden oklar koordinat sisteminde farklı yerlere çizilebilirler. Önemli olan vektörün kuyruğu origine getirilince vektörün başının nereye geldiğidir. Vektörün değeri, kuyruk origindeyken baş noktasının koordinatlarıdır.

örnek vektörler
Şekil 3.
Vektör İşlemleri
Vektörlerin Toplanması
Vektörlerde toplama işlemi şöyle yapılır. Diyelim ki P(2,1) ile Q(-1,2) vektörlerini toplamak istiyoruz. Bütün yapmamız gereken aynı eksenlerin koordinatlarını toplamaktır. Yani iki vektörün x koordinatları olan 2 ve -1 değerlerini toplayarak sonuç vektörünün x koordinatını elde ederiz. Aynı işlemi y koordinatlarına da yaparız.
(2,1) + (-1,2) = (2+(-1), 1+2) = (1,3) yani genel olarak: (x1,y1) + (x2,y2) = (x1+x2, y1+y2)
Vektör toplamasını aynı zamanda görsel olarak da yorumlayabiliriz. P vektörünü kuyruğu orijine gelecek şekilde yerleştirdikten sonra Q vektörünü kuyruğu P'nin başına gelecek şekilde yerleştiririz. Bu anda Q'nun başı nereye geliyorsa sonuç vektörü orijinden bu noktaya kadarki vektördür. (Bkz. Şekil 4)

vektörlerin toplanması
Şekil 4.
Vektörlerin Tersi
Vektörlerin tersini almak için bütün yapmamız gereken koordinatların tersini almaktır.
-(P(x1,y1))
Grafiksel olarak bunun anlamı vektörün başı ve kuyruğunu yer değiştirmektir. Yani vektörü tam ters istikamete baktırmaktır.
Vektörlerin Çıkarılması
Vektörlerin çıkarılması demek birinci vektör ile ikinci vektörün tersinin toplanması demektir. Başka bir deyişle koordinatlar arası çıkarma işlemi yapılır.
(x1,y1) - (x2,y2) = (x1-x2,y1-y2)
Grafik yorumu ise şudur. İkinci vektörün tersinin kuyruğu birinci vektörün başına eklenir. (Bkz. Şekil-5)

Vektörlerin Çıkarılması
Şekil 5.
Vektörlerin Çarpılması
örlerin Çarpılması
Vektörlerde toplama ve çıkarma işlemlerinden bahsettikten sonra sıra çarpma işlemine geldi. Fakat vektörler söz konusu olduğunda çarpma işleminin üç değişik versiyonundan bahsedebiliriz.
1. Bir skaler ile bir vektörün çarpımı 2. İki vektörün nokta çarpımı (dot product) 3. İki vektörün çapraz çarpımı (cross product)
Çapraz çarpım konusuna şimdilik değinmeyeceğiz. Vektörlerde çarpma işlemlerinden bahsederken ihtiyacımız olacak olan bir kavram daha var. Vektörlerin boyu. Bu konuyu kısaca açıkladıktan sonra skaler çarpıma geçebiliriz.
Vektörün Boyu
Vektörleri ilk başta tanımlarken bir büyüklük ve bir yön ifade ettiklerini söylemiştik. İşte bu büyüklüğü vektör koordinatlarından elde etmenin yolundan bahsetmenin zamanı geldi. Aslında bir vektörün boyunu bulmak için Pisagor teoremini kullanmamız yeterlidir. P vektörünün boyunu |P| diye gösterirsek:
P(x1,y1) olsun
Pİ V(x12 * y12)

Şekil 6.
Vektör
ile skaler çarpımı
Hatırlarsanız vektörler için çok boyutlu büyüklükler, skalerler için ise tek boyutlu büyüklükler demiştik. Bir skaler ile bir vektörün çarpımı tanımlı bir işlemdir ve sonucu da bir vektördür. Bütün yapmamız gereken skaler ile vektörün tüm bileşenlerini teker teker çarpıp sonuçlardan yeni bir vektör oluşturmaktır:
n skaler bir sayı olsun. P(x1,y1) vektörünü n ile çarparsak: n (n*x1, n*y1)
n pozitif bir sayı ise bu yaptığımız çarpım, Vektörün yönünü değiştirmeden boyunu n oranında uzatır. n negatif ise yönü tam olarak tersine çevirip n'nin mutlak değeri oranında boy uzatılır. Uzatılır diyorsak da unutmayın n eğer O ile 1 arasında bir değere sahipse o zaman vektörün boyu kısalmış olur.

Şekil 7.
Vektörlerin nokta çarpımı
İki vektörün nokta çarpımı şöyle tanımlanmıştır: P(x1,y1) . O(x2,y2) — (x1*x2) * (y1*y2)
Yani x koordinatları birbiri ile çarpılır. Aynı şekilde y koordinatları birbiri ile çarpılır. Bu iki çarpım toplanır. Yani nokta çarpımın sonucu bir skalerdir.
Bazı trigonometrik çıkarımlardan sonra bu işlemin aslında aşağıdaki gibi de ifade edilebildiğini görürüz.
P(x1,y1) . A(x2,y2) — İP)lOlcosla)
Burada a açısı P ve © vektörlerinin arasındaki açıdır. İP) P'nin uzunluğudur (boyudur).Bu işlem geometrik olarak şöyle yorumlanabilir. İPjcos(a) aslında P vektörünün © üzerine olan izdüşümünün boyudur. Bu “izdüşüm boyu” ile O'nun boyunun çarpımı, nokta çarpımını verir.

Şekil 8.
Örnek: (2,5) . (1,-2) 5 (2*1) * (5*(-2)) £ 2 * (-10) 5 -8
Nokta çarpımın 3D efektlerdeki en önemli faydalarından biri iki vektör arasındaki açıyı bulmaya yaramasıdır. Bu açı da ışıklandırma efektlerinde işe yarar.
(x1*x2) * (y1*y2) — cos(a) © ((x1*x2) * (y1*Y2) ) / ( )
cos(a)'yı bildiğimiz için a'yı da bulabiliriz. Ama çoğu zaman zaten bize lazım olan a'nın kendisi değil cosinüs'üdür. Bunu ileride göreceksiniz.
Son olarak ufak bir gözlem yapmanızı isteyeceğim. İki vektörün aralarındaki açı 90 derece ise nokta çarpımları ne olur? cos(90)'ın değeri O'dır. Yani vektörlerin boyları ne olursa olsun O ile çarpılacakları için aralarındaki açı dik olan iki vektörün nokta çarpımı her zaman 0 olacaktır.
Önümüzdeki bölümde vektörlerin 3d efektlerde nasıl kullanıldığından bahsedeceğiz