Bu sayfadaki yazılar
Sayfanın metni
Sayfa 5
Vektörler ile 3D efektlerin ne ilgisi var?
Bu kadar çok vektörlerden bahsetmemize rağmen henüz sadece vektörler üzerinde bazı işlemlerin matematiksel olarak nasıl yapılacağını gördük. Bu işlemlerin ve vektörel ifadelerin ne işimize yarayacağını anlayabilirsek onları gereken yerlerde kullanabilecek durumdayız.
Objelerin vektörlerle ifade edilmesi
İşte kilit konu bu. Uzayda duran herhangi bir obje (kalem, kitap, ev, Hüsnü, Ayşe vs...) nasıl matematiksel olarak ifade edilebilir. Bir objenin şeklini matematiksel olarak ifade etmenin bir yolunu bulmalıyız ki o obje hakkındaki bilgileri bilgisayarda saklayabilelim ve üzerinde işlemler yapabilelim.
Her objeyi sonsuz sayıda noktalardan oluşuyor gibi düşünebiliriz. Yani sonsuz miktarda belleğimiz, sonsuz güçte bir CPU'muz olsa bir objeyi oluşturan bütün noktaları bir vektör olarak alıp her nokta için x ve y koordinatlarını belleğe saklayabilir ve üzerlerinde işlem yapabilirdik. Bu pratikte mümkün olmadığına göre bütün noktaları seçmeyeceğiz.
Eğer objenin sınırlarındaki noktaları seçip içini göz ardı edersek bayağı bir noktadan kurtulmuş oluruz. Yani artık objenin sadece dış yüzeylerindeki noktaları düşünelim. Maalesef hala sonsuz sayıda nokta demektir bu. İşte bu noktada bu sonsuz sayıdaki dış noktadan sonlu sayıda nokta seçip objeyi yaklaşık bir şekilde modelleyeceğiz.
Modellemek
Modellemek bütün mühendislik dallarında kullanılan bir terimdir. Genel olarak gerçek dünyada var olan bir objeyi, olayı veya problemi matematiksel olarak ifade etmeye verilen addır. Çoğunlukla bu matematiksel ifadeye çevrim esnasında bazı bilgiler kaybedilir ve sisteme bir 'hata payı' dahil olur. Bu hata payının miktarı bilindiği müddetçe modelden verimli sonuçlar elde edilebilir. Mesela bir kalemin boyunu ölçseniz ve 20 cm deseniz bir modelleme yapmış olursunuz. Bu modelleme ile gerçek dünyada var olan 'kalemin boyu' kavramını matematiksel bir büyüklük olan '20 cm' ile modellemiş olursunuz. Cetvelinizdeki en dar çentik 1 mm ise siz kalemin boyunu 20.0 cm ile 20.1 cm arasında gördüğünüz için 20 cm dersiniz ama kalemin gerçek boyu belki de 20.024 cm. Ama sizin elinizdeki imkanlarla bunu bilme şansınız yok. Peki modeliniz bu durumda hiç işe yaramaz mı? Mesela birisi dese ki “ben bu kalemden 4 tanesini uç uca koyacağım acaba şuradaki 1 metrelik masaya sığar mı?” Siz bu modeli kullanarak bu probleme cevap verebilirsiniz. Elinizdeki model kalemin 20 cm olduğunu ve 1 mm'lik hata payınız olduğunu söyler. Öyleyse 4 kalemin boylarında 4 kere maksimum hatayı göze alırsanız 4 kalemin uç uca 80 cm olacağını ve 4 mm'lik hata payınız olduğunu söyleyebilirsiniz. Bu da 1 m'nin altında olduğu için bu kalem manyağı arkadaşınıza içinin rahat olmasını söyleyebilirsiniz.
Obje Modellemek
Böylece objenin dış yüzeylerinden seçeceğiniz sınırlı sayıdaki nokta ile o objeyi modelleyebilirsiniz. Bu noktada objenin özelliklerine bakılarak nasıl bir modelleme yapılacağına ve ne tip noktaların seçileceğine karar verilir. Örneğin elinizde tam düzgün küp şeklinde bir obje varsa bunun 8 köşe noktasını seçerek modelleyebilirsiniz. Bu noktaların aralarında doğrusal kenarlar olduğunu, kenarların oluşturduğu karelerin de doğrusal yüzeyler olduğunu söylersiniz. Aralardan daha fazla nokta da seçebilirsiniz. Ama doğrusal olduğunu bir kere söylediğiniz bir kenarın iki dış köşesini vermişseniz ortasından üçüncü bir noktayı daha vermeye gerek yoktur. Çünkü zaten o iki kenarın doğrusal olduğunu bir kere söylediniz. Bu sayede o aradaki her noktayı tanımlamış oldunuz. Bunun dışında seçilecek her ekstra nokta sisteme getirilen gereksiz bir yük olacaktır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 4
Vektörlerin nokta çarpımı
İki vektörün nokta çarpımı şöyle tanımlanmıştır:
P(x1,y1) . Q(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) . Q(x2,y2) = [P][Q]cos(a)
Burada a açısı P ve Q vektörlerinin arasındaki açıdır. [P] P'nin uzunluğudur (boyudur). Bu işlem geometrik olarak şöyle yorumlanabilir. [P]cos(a) aslında P vektörünün Q üzerine olan izdüşümünün boyudur. Bu boy ile Q'nun boyunun çarpımı, nokta çarpımını verir.
Örnek: (2,5) . (1,-2) = (2*1) + (5*(-2)) = 2 + (-10) = -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) = [P][Q]cos(a)
cos(a) = ( (x1*x2) + (y1*y2) ) / ( [P][Q] )
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 kosinü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 0'dır. Yani vektörlerin boyları ne olursa olsun 0 ile çarpılacakları için aralarındaki açı dik olan iki vektörün nokta çarpımı her zaman 0 olacaktır.