C64 Türkiye sayı 7, sayfa 8

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 8

Noktamız P(x1,y1) noktası olsun; bu noktayı saatin ters yönünde a açısı kadar döndürdüğümüz zaman noktamız Q(x2,y2) koordinatlarına gelecek. Elimizde x1, x2 ve a varken x2 ve y2'yi nasıl bulacağız?

Bunun için gelin P vektörünü iki bileşene ayıralım: Px(x1,0) ve 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 Q(x2,y2) noktasını bulabiliriz.

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.

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