Yazan : Şadi Evren ŞEKER

Bilgisayar grafiklerinde bir şeklin dönüştürülmesi sırasında aşağıdaki 3 işlemden birisi yapılabilir:

içerik
3 boyutlu uzayda şekil taşıma
3 boyutlu uzayda şekil döndürme
Eksene paralel doğru etrafında şekil döndürme
Eksene paralel olmayan doğru etrafında şekil döndürme
3 boyutlu şekil ölçekleme

  • Taşıma (Translation)
  • Döndürme (Rotation)
  • Ölçekleme (Scaling)

Yukarıdaki bu işlemlerin 2 boyutlu şekil dönüşümlerinin (2D Transformations) yanında 3 boyutlu olarak işlenmesi de mümkündür. Bu yazının amacı yukarıda listelenen işlemlerin sırasıyla anlatılmasıdır.

3 Boyutlu uzayda şekil taşıma

Şekil taşıma işlemi basitçe bir şekli oluşturan noktaların değerlerinin belirli bir x,y ve z boyutu değişimine tabi tutulması olarak düşünülebilir. Bu durumu basit bir nokta ile anlayabiliriz. Örneğin (x,y,z) değerlerine sahip bir noktanın taşınması demek aslında noktanın (x+tx,y+ty,z+tz) koordinatlarında kodlanması demektir. Buradaki tx,ty ve tz değerleri taşıma işlemi sırasındaki yer değiştirme miktarlarıdır ve taşıma işleminin yönüne göre eksi değer alabilirler.

tasima3d

Yukarıdaki şekilde P noktası P’ noktasına taşınmıştır. Bu işlem için homojen koordinat sistemi (homogenous coordinate system) kullanılacak olursa noktalarımızı aşağıdaki şekilde gösterebiliriz:

tasima3b

Yukarıdaki vektör (yöney) gösterimlerindeki 1 değerleri homojen koordinat sisteminden gelen değerdir. Ayrıca yukarıdaki x,y,z değerlerini 3 boyutlu kartezyen uzayda (cartesian space) bir nokta belirlemek için kullanılan değerler olarak düşünmek mümkündür.

Yukarıdaki iki nokta arasındaki dönüşüm işlemi için aşağıdaki dönüşüm masfufunu (matrix) kullanmak mümkündür.

tasimamasfuf

Yukarıdaki dönüşüm masfufunu kullanarak P’ = T P masfuf çarpımını yapmak mümkündür.

3 boyutlu uzayda şekil döndürme

Döndürme (rotation) işlemi taşıma (translation) işlemine benzer şekilde bir nesnenin bir doğru etrafında dönemsidir. Temel döndürme işlemleri eksen etrafında yapılan işlemlerdir. Örneğin aşağıdaki şekilde görüntülenen z ekseni etrafında döndürme işlemini inceleyelim:

dondurme3d

Yukarıdaki şekilde görüntülenen döndürme aslında 2 boyutlu döndürme (2d rotation) olarak düşünülebilir çünkü döndürme işlemi sırasında sadece şeklin x ve y değerlerinde değişikli olacak z değeri sabit kalacaktır. 3 boyutlu döndürmenin 2 boyuttan tek farkı ise şekli oluşturan noktaların 3 boyutlu olması dolayısıyla da x,y ve z değerlerine sahip olmasıdır.

Bu durumda bir noktanın döndürülmeden önceki ve döndürüldükten sonraki değerlerini aşağıdaki şekilde gösterecek olursak:

tasima3b

Bu noktalar arasındaki geçişi formüllediğimizde:

x’= x cosθ – y sinθ

y’= x sinθ + y cosθ

z’ = z

şeklinde gösterebiliriz. Yani bir noktanın orjin (ordinat) merkez alınarak z ekseni etrafında döndürülmesi işlemi sonucunda oluşan yeni nokta değerleri 2 boyutlu şekil dönüşümüne benzer şekilde yukarıda verilen formülden hespalanabilir.

Bu formülü bir dönüşüm masfufa indirgemek gerekirse aşağıdaki şekilde bir masfuf elde edilir:

dondurmemasfuf1

Yukarıdaki masfuf kullanılarak P’ = T P çarpımı sonucunda istenilen denklemler elde edilmiş olur. Döndürme işlemi z ekseni etrafında yapılabileceği gibi y ve x eksenleri etrafında da yapılabilir.

dondurmeyx

Yukarıdaki şekillerde gösterilen bu döndürme işlemleri için aşağıdaki masfuflar (matrices) kullanılabilir:

dondurmexy

Yukarıdaki denklemler ve masfuflar sırasıyla x ve y eksenleri etrafında yapılan döndürme işlemleridir.

Eksene paralel doğru etrafında döndürme

Yukarıdaki bölümde açıklanan bir eksen etrafında döndürme işlemine benzer olarak bir doğru etrafında da döndürme işlemi gerekebilir. Bu durumda şayet doğru bir eksene paralelse, döndürme işlemi basit bir taşıma işlemi ilave edilerek eksen etrafında döndürme işlemiyle çözülebilir.

paraleldondurme

Yukarıdaki şekilde x eksenine paralel bir doğru etrafında döndürme işlemi tasvir edilmiştir. Bu durumda doğruyu eksene taşımak ve benzer şekilde şekli de eksene taşıma ve döndürmek sonra da geri taşımak bir çözüm olur.

P’ = T-1 . Rx(θ) . T. P

Yukarıda verilen bu dönüşüm işlemleri sırasıyla yapılırsa, yani P noktası önce taşınırsa (T) sonra x ekseni etrafında döndürülürse (Rx(θ)) ve sonra eski yerine taşınırsa (T-1) şekil aslında eksene paralel olan bu doğru etrafında döndürülmüş olur.

Eksene paralel olmayan doğru etrafında şekil döndürme

Yukarıdaki bölümde anlatıldığı gibi her zaman bir doğru eksene paralel olmayabilir. Bu durumda eksene paralel olmayan bir doğru için önce etrafında döndürme yapılacak doğrunun eksenlerden birisine paralel hale getirilmesi gerekir.

paralelolmayan

Örneğin yukarıdaki şekilde, herhangi bir eksene paralel olmayan bir doğru etrafında şeklimizi döndürmek isteyelim.

Bu işlem 5 adımda gerçekleştirilebilir:

  1. Doğrunun merkezden geçecek şekilde taşınması
  2. Doğrunun eksenlerden birisine paralel halde döndürülmesi
  3. Şeklin eksen etrafında döndürülmesi
  4. Doğrunun eski eğimine döndürülmesi
  5. Doğrunun merkezden eski yerine taşınması

Yukarıda sıralandığı üzere nokta (veya şekli oluşturan noktalar) sırasıyla 5 dönüştürme işlemine tabi tutulur ve sonuçta şekil verilen doğru etrafında döndürülmüş olur.

3 boyutlu şekil ölçekleme

Bir şeklin ölçeklenmesi, şekli oluşturan noktaların x,y ve z değerlerinin belirli bir katsayı ile çarpılması ile mümkündür. Bu işlem sırasında şekil hem yer değiştirmekte hem de şekli oluşturan noktalar birbirinden uzaklaşıp yaklaştığı için şekil büyümekte veya küçülmektedir.

3bscale

Yukarıdaki şekilde de görülen bu durum için aşağıdaki dönüşüm masfufu kullanılabilir:

scalemasfuf

Yukarıda verilen bu masfuf ile bir nokta aşağıdaki şekilde çarpıldığında elde edilen yeni P’ noktası merkeze göre verilen değerlerde ölçeklenmiş bir noktadır:

P’ = T P

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir