Anasayfa Eğitseller Programlama Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2)

Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2) PDF Yazdır e-Posta
Kullanıcı Değerlendirmesi: / 3
ZayıfEn iyi 
Eğitseller - Programlama
Perşembe, 26 Haziran 2008 15:36
Bu yazımda size bir koordinat sistemi oluşturulmasını anlatacağım. İlk örneğim verilen bir göz ve hedef için bir kamera koordinat sisteminin oluşturulması olacaktır. Ancak tüm bu bilgileri vermeden önce size vektörel çarpım işlemini anlatacağım.

Vektörel çarpım

Vektörel çarpım işlemi 3 boyutlu bir uzayda verilen iki veköre ait düzleme dik yeni bir vektör bulunması için kullanılan bir işlemdir. Yeni bulunan vektörün büyüklüğü ve vektörlerinin oluşturduğu alana eşittir. İki vektör arasındaki işlem ( x ) işareti ile gösterilir. Elde ediken yeni vektörün yönü şekil 1b deki gibi bulunur.

Figure 1: The area of a parallelogram as a cross product. http://www.math.duke.edu/education/ccp/materials/mvcalc/vectors/hand2a.gif

(a) Şekil1 (b)

a) ve vektörüna ait vektörel çarpım işlemi

b) ve vektörüna ait vektörel çarpım işlemi sonucu elde edilen vektörü. ()

Vektörel çarpım işleminde elde edilen yeni vektörün yönü çarpım işleminin sırasına göre değişir. dır. Ancak şeklinde bir eşitlik vardır. Elde edilen veköre ait büyüklük de az önce yukarıda belirttiğim üzere, iki vektörün gösterdiği alana (şekil 1a) eşittir. Aşağıdaki gibi bulunur.

Göreceğiniz gibi bu alan aslında şekil 1a da görülen paralel kenarın alanından öte birşey değildir. Şimdi bu vektörün bulunma işlemini görelim.

ve şeklinde karetezyen koordinat sisteminde tanımlı olsun ( Bu vektörler başka bir sistemde de tanımlanabilirdi ancak bu durumda aşağıdaki matrisin ilk satırında bu vektörler olmalıydı ). Aşağıda görülen matrisin determinantı yeni vektörü belirler. (Matris determinantıyla şimdilik hiç kafanızı karıştırmayın, sadece işleme dikkat edin)

Yani şeklindedir.

Kamera koordinat sisteminin oluşturulması

Şekil 2 de görüldüğü gibi, sol el kuralıyla hazırlanmış bir sistemde, A(2,2,2) noktasında bulunan bir gözlemci B(7,6,4) noktasına bakmaktadır.

Öncelikle vektörünü ( B ile A noktası arasındaki vektör) elde edelim.

şeklinde bir vekördür. Bu vektöre bakış vektörü adı verilir. Bir önceki yazımı hatırlarsanız, bir koordinat sistemi normalize edilmiş ve orthonormal vektörlerden oluşmaktadır. Dolayısıyla yeni otohonormal sistemimizi oluşturmak için, vektörünü normalize etmemiz gerekecektir.

(Vektör büyüklüğü)

Normalize edilmiş vektör aşağıdaki gibi bulunur.

Şekil 2

3 boyutlu bir sistemde , orthonormal bir sistemi tanımlamak için 3 adet vektöre ihtiyacımız vardır. Elimizde 1 adet vekötrümüz var ancak henüz 2 adet daha vektöre ihtiyacımız bulunmaktadır. Bu sebeple şöyle bir işlem yapacağız. Bir adet, kameranın üst yönünü göstermek üzere vektör seçeceğiz (şekil 2a) ve bakış vektörü ile bu vektörün düzleme dik bir vektör bulacağız. Daha sonra elde ettiğimiz vektörü ve bakış vektörünü kullanarak bu iki vektöre dik bir vektör elde edeceğiz. Kamera sistemi vektörlerinin ( şeklinde tanımlandığını varsayalım.

( +y yönünde kameranın üst yönünü gösterecek vektörün belirlenmesi için kullanılır) ( Şekil 3 )

Şekil 3

İlk olarak ve vektörlerini kullanarak orthonormal sistemimizin vektörünü bulalım. Bu işlem şeklindeki vektörel işlemin sonucunun normalize edilmesi ile bulunur. Elde edilen vektörü şekil 4 teki gibidir.

Ancak bu vektör normalize edilmemiştir. Bu yüzden normalize etmemiz gerekir.

Şekil 4

Daha sonra kameraya ait orthonormal sisteme ait vektörü de, vektörü ile elde edilen vektörlerinin, vektörel çarpımlarından elde edilir. Şekil 5’de görülen ( sistemi elde edilir.

Şekil 5

Artık elimizde ( sistemimiz olduğuna göre kartezyen koordinat sisteminden, kamera koordinat sistemine geçişi sağlayacak matrisi elde edebiliriz. Bu matris aşağıdaki gibidir.

Yeni koordinat sisteminde karetzyen koordinat sistemindki herhangi bir noktasının, yeni koordinat sistemindeki karşılığını aşağıdaki gibi bulabiliriz.

Şimdi daha önceki eğitselde tartışmış olduğumuz orthonormallik kriterlerini ispatlayalım.

( Normal vektör)

( Normal vektör)

( Normal vektör)

3 vektör de normal vektördür. Diklik durumlarını da aşağıdaki gibi inceleyelim. Burada önce ve arasındaki dikliği, daha sonra ile , daha sonra da ile arasındaki dikliği kontrol edelim.

( Diktir )

( Diktir )

( Diktir )

3 vektör de birbirine diktir. Demek ki bu sistem bir orthonormal sistemdir.

Birden fazla koordinat sistemi arasındaki geçiş

Bazı durumlarda birden fazla koordinat sistemi arasında geçiş gereklidir. Elimizde her sistem arası geçiş için (i,j koordinat sistemleri) bir koordinat sistemi geçiş matrisi varsa bu matrislerin ard arda çarpımları ile toplam dönüşüm gerçeklenmiş olur.

olsun ve tüm koordinat sistemleri dönüşümleri sonucu elde edilsin. Birden fazla dönüşüm aşağıdaki gibi gösterilir. Aşağıdaki matrisi tüm dönüşüm matrislerinin çarpımı ise;

Ters koordinat sistemi dönüşümü

Bazı durumlarda da, bir noktayı geri dönüşümle, taşımak isteriz. Yani kamera koordinat sistemine ait matrisi biliriz ve kameranın bulunduğu sisteme taşımak isteriz.

Yani bu sefer elimizde ve dönüşüm matrisimiz elimizde olsun. yi elde etmeye çalışalım.

.Bunun için matrsilerin tersi ile bazı temel noktaları aşağıdaki gibi gösterebiliriz.

Matris tersinin bulunması

kare bir matrisi, kare matrisin tersini gösteriyorsa, de birim matrisi gösteriyorsa. Aşağıdaki eşitlikler doğrudur.

( Birim matris, çarpımın sonucunu değiştirmez)

( Bir matrisin kendi tersiyle çarpımı birim matrisi verir )

Bir kare matrisin tersinin alınabilmesi için determinantının 0’dan farklı olması gerekmektedir.

Şu anda karmaşık matris ters alma işlemlerine girmeden ortogonal matrislerle ( tüm satırları veya sütünları birbirine dik olan ) matrislerle ilgili bir kaç bilgiyi vereceğim.

ortogonal bir matris ise ve şeklinde matris transpozisyonu işlemi ise

eşitliği mevcuttur. Bu ortogonal matrislerin tersinin, kendi transpozu olduğunu gösterir.

Elimizdeki bu bilgilerden yola çıkarak yi elde etmeye çalışalım.

ise eşitliğin her iki tarafını ile çarparsak sonuç değişmez

( çarpımının birim matris olduğunu ve sonucu değiştirmeyeceğini hatırlayalım. Bu durumda

olur. Yani bizim matrisinin tersine ihtiyacımız vardır.

Bizim örneğimizde

şeklindedir

Buradan

Yer değiştirme matrisinde işimiz biraz daha kolaydır. Sadece yer değiştirmeyi geri almamız gerekir.Bunun için yer değiştirme değerlerinin negatifini almamız yeterlidir. Matrisin tersini nümerik olarak çözdüğümüzde de bu sonucu aldığınızı görebilirsiniz.

Kullanılarak geri dönüşümü tamamlamış oluruz.

Notlarım

İlgilenen arkadaşlar bu dediklerimi sayısal olarak deneyebilirler ve sonuçlarını alabilirler. Bu tür dönüşümler grafik iş hattında sıkça kullanılmaktadır.

Ahmet Bilgili

Son Güncelleme ( Perşembe, 26 Haziran 2008 15:39 )
 
Yorum ekle (4 yorum)
Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2)
Jun 27 2008 20:36:55
** Bu Başlık, İçerik Tartışmasıdır: Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2) **

eğitsel için saoalsın ahmet devamını bekliyorum
#7780
Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2)
Jul 15 2008 14:49:09
selam..
proglamlama konusunda ilk eğitsel bu ise be bu sevdadan vazgeçecem malesef istiyorum ki bi bebeğe yürümesini öğretmek gibi olsun. ben bu bilgileri kullanamadıktan sonra ögrensem ne olacak!
Ben pixel art grafikleri olan cok basıt bi oyun yapmak istiyorum fakat nereden başlamam gerektiğini anlayamadım daha... tavsiye ve yardımlarınızı bekliyorum... teşekkürler
#7940
Cvp:Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2)
Jul 15 2008 15:46:48
Boş mesajlar yağdıracağına aç en çok okunan dökümanları bi incele. Siteye damdan düşer gibi gelip hazır bilgi bekleyenleri pek sevmeyiz ailecek.
#7946
Koordinat Sistemleri ve Koordinatlar Arası Geçiş (2)
Jul 19 2008 20:08:52
Merhaba

Raftck ...

Burada gösterdiğim işlemlerin biraz karışık olduğunun farkındayım, ancak bu seni korkutmasın, 3D ile ilgili işlemler yapmak istiyorsan, bu bigiler olmazsa olmaz bilgiler. Oyunlarda gördüğün birçok 3 boyutlu işlemin altında yatan temel prensipler.

Şimdi "ben basit bir oyun yapmak istiyorum" diyorsun. Basitin tanımı o kadar basit değil, oyunun en basiti bile karmaşık bir yapıya sahip olabilir, bu yüzden adım adım ilerle, önce programlama, veri yapıları ve algoritma bilgini yerine oturt, matematik altyapını sağlamlaştır.

Ahmet
#7964

Yorum ekle. (4 yorum)

 

OyunGelistirici.net - Türk Oyun Yapımcılarının Buluşma Noktası

Bu sitede yazılan tüm yazıların hakları yazarlarına aittir. İzin alınmadan yayınlanamaz.

Bu sitede Firefox kullanmanız önerilir. En az 1024 x 768 masaüstü çözünürlüğü tavsiye edilir.