Plazma sayı 7, sayfa 40

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 40

Py(0,y1). Dikkat ederseniz P'yi, Px'i ve Py'yi ne kadar döndürürsek döndürelim. P her zaman Px ve Py'nin toplamına eşit olacak. Öyleyse biz Px ve Py'nin a açısı kadar döndürüldüğünde nereye geldiklerini bulursak (ki bunu bulmak kolay) sonra bu ikisini toplayıp A(x2,y2) noktasını bulabiliriz.

Şekil 4.

Px, a kadar dönünce x ekseni ile a derece açı yapan x1 uzunluğunda bir vektör olur. Trigonometriden hatırlarsak bu durumda Px'in x koordinatı (x1)cos(a) olur. Aynı şekilde y koordinatı ise (x1)sin(a) olur.

Py, a kadar döndüğünde y ekseninin sol tarafına doğru a açısı yapan y1 uzunluğunda bir vektör olur. Onun koordinatları da sırası ile (-y1)sin(a) ve (y1)cos(a) olur.

Son olarak P'nin yeni yerini yani x2 ve y2'yi bulmak için Px ve Py'nin aynı koordinatlarını toplarsak, x2 = (x1)cos(a) - (y1)sin(a), y2 = (x1)sin(a) + (y1)cos(a)

İşte bu bir noktayı tek eksende iki boyutlu döndürmek için gereken işlemdir. Bir objeyi oluşturan bütün noktalar için bu işlem tekrarlanırsa obje origin etrafında (ya da 3 boyutlu düşünürsek z ekseni etrafında) döndürülmüş olur.

Ölçekleme

Ölçekleme işlemi bir objeyi büyütüp küçültmeye yarar. Bir vektörün skaler ile çarpılması konusundan hatırlarsanız, bu işlem sonucu vektörlerin boyları uzayıp kısaltılabiliyordu. Eğer bir objeyi tanımlayan bütün noktaların vektörlerini aynı skaler ile çarparsak o objeyi o skaler oranında ölçeklemiş oluruz.

Genelde bütün noktaların x ve y koordinatları aynı skaler ile çarpılarak ölçeklenir bu durumda obje şeklinde herhangi bir deformasyona uğramadan büyür ve küçülür. Eğer x ve y koordinatları aynı oranda ölçeklenmezse objeler x veya y yönünde yassılaşırlar. Bu da bazen kullanılan bir efekttir. Ben bu efekti Mist demosundaki wobbling vektör partında kullanmıştım.

Hatta objeyi oluşturan noktalar farklı farklı skalerler ile anime bir şekilde ölçeklenirse çok ilginç jelimsi objeler elde edilebilir ki bu tip efektler genelde çok prim yapar. 3 boyut motorunuzu yazdıktan sonra böyle ufak oynamalarla çok ilginç ve orijinal efektler bulabilirsiniz.

Dönüşümlerin birleştirilmesi

Genelde dönüşümler tek tek değil birlikte gerçekleşirler. Yani bir obje uzayda aynı anda yer değiştirip kendi etrafında dönerken büyüyüp küçülüyor olabilir. Bir objeye olan dönüşümler bu durumda birleştirilip hesaplanabilmelidir.

Bu ihtiyacın doğduğu bir diğer popüler durum daha vardır: Kinematik. Örneğin kendi kolunuzu düşünün. Kolunuz omzunuzdan bir açı ile bir eksende dönerken, dirseğiniz başka bir açı ile döndüğünde eliniz ne kadar dönmüş ve yer değiştirmiş olur? Bu soruyu cevaplayabilmek için objelerin birbirlerine bir ebeveyn-çocuk hiyerarşisi ile bağlandığını düşünebiliriz. Yani bu örnekte gövdeniz, üst kolunuzun babası, üst kolunuz ön kolunuzun babası, ön kolunuz ise elinizin babası gibi. Atalar bir dönüşüm yaptıklarında bütün çocuk ve torunlar da bu dönüşümü geçirir. Ama çocuklar belli kısıtlar dahilinde atalarından bağımsız bazı dönüşümler geçirebilir.

İşte bütün bu “bileşik dönüşüm” hesaplama işlemlerinde “matrisler” kullanılır. Bu yüzden bir sonraki bölümümüzde matrislerden bahsedeceğiz.

Klavyeyle gezinmek için ← ve → tuşları.