Hoşgeldiniz: OyunYapimi.org
 
Ara
Konular
  Üye Olun!    
Ana Menü
 Ana Sayfa
 Anketler
 Dosyalar
 Dökümanlar
 Forum
 Haber Arşivi
 WWW Linkleri
 Üye Listesi

Forumlar
Forumlarda Arama
 
[ Ara ]
Son yazilanlar

free ebooks - 2004-05-16 14:47 free ebooks...
oyun yazmak için - 2004-05-15 11:13 oyun yazmak için...
Sinus dalgası - 2004-05-14 19:21 Sinus dalgası...
Demosu yakında... - 2004-05-06 15:11 Demosu yakında......
Depth Test - 2004-05-03 20:55 Depth Test...
forum mesajlarini duzenlemek - 2004-05-03 19:34 forum mesajlarini ...
Başka Programlara Erişmek - 2004-05-03 17:44 Başka Programlara ...
Güzel bir e-book bağlantısı.. - 2004-05-03 16:06 Güzel bir e-book b...
Okyanus Dalgasi - 2004-05-03 16:00 Okyanus Dalgasi...
3d Shoot em up - 2004-05-03 15:57 3d Shoot em up...
Esnek Güç - 2004-05-03 13:32 Esnek Güç...
UltimateGameProgramming.com - 2004-05-03 12:29 UltimateGameProgra...
Function Pointer Nedir ne ise yarar - 2004-05-03 01:35 Function Pointer N...


Konu Disi


LAMER - 2004-05-10 01:58 LAMER...
anasafa yok forum var - 2004-05-08 16:01 anasafa yok forum ...
Anasayfa Kapali  Fakat.. - 2004-05-06 15:05 Anasayfa Kapali F...
Texture Arşivi - 2004-05-03 01:39 Texture Arşivi...
Yeni Kitap: Elektronik Hobi - 2004-05-03 00:29 Yeni Kitap: Elektr...
3DTURK - 2004-05-02 23:27 3DTURK...
Online Oyun - 2004-05-02 19:27 Online Oyun...


Splatt Forum

Vektörler

(345 kelime)
(373 okuma)   Yazdırılabilir Sayfa




Vektörler

Çarpışma algılama(collision detection), ışıklandırma(lighting) gibi işlemleri anlayabilmek için öncelikle vektör, düzlem, normal gibi kavramları anlamak gerekir.

3 boyutlu uzayda bir nokta (x, y, z) koordinatlarıyla gösterilir. Bazen (x, y, z, w) olarak da gösterilebilir. Burada w orandır ve bunu (x, y, z) koordinatlarına dönüştürmek için (x/w, y/w, z/w) işlemini yapmamız gerekir. Noktalar bir poligonun köşelerini, yada bir ışığın pozisyonunu tanımlamak gibi işlemlerde kullanılabilir.

Vektörlerde bir nokta ile tanımlanabilir. Ama bir vektörün asıl gösterdiği şey bir doğrultudur.

image001.gif (983 bytes)

1. Vektörler Üzerinde İşlemler

1.1. Toplama – Çıkarma İşlemi

İki vektörün toplanması, iki vektörü uç uca ekleyerek birinci vektörün başlangıcından ikinci vektörün ucuna doğru yeni bir vektör elde edilmesidir

image002.gif (1369 bytes)

İki vektörün farkı işleminde de aynı şekilde negatif vektörün tersi alınarak toplama işlemi gerçekleşir.

image003.gif (1361 bytes)

1.2. Vektörün Uzunluğu

Vektörün uzunluğu pisagor bağıntısıyla kolayca bulunabilir.

||v|| = sqrt( x*x + y*y + z*z )

1.3. Vektörü Normalize Etmek

Bir vektörün uzunluğunu 1 birim yapmaya o vektörü Normalize etmek denir. Bunun için vektörün her bir elemanını vektörün uzunluğuna bölmek gerekir.

x = x / ||v||
y = y / ||v||
z = z / ||v||

1.4. Dot İşlemi

Vektörler üzerinde çok önemli bir işlemde Dot işlemidir. Dot işlemi iki vektör arasındaki açısal ilişkiyi gösterir. Aradaki açının cosinüsü ile vektörlerin uzunlukları çarpımına eşittir.

Dot(v1, v2) = cos(a) * ||v1|| * ||v2||

Çarpım işlemi şöyle hesaplanır.

A(ax, ay, az) * B(bx, by, bz) = ax*bx + ay*by + az*bz

yani, Dot(v1, v2) = cos(a) * ||v1|| * ||v2|| = ax*bx + ay*by + az*bz

Buradan anlaşılacağı gibi eğer vektörler normalize edilmişse bu işlemin sonucu aradaki açının cosinüsünü verecektir.

1.5. Cross İşlemi

Vektörler üzerinde çok önemli bir başka işlemde cross işlemidir. Cross işlemi ile iki vektöre dik başka bir vektör bulunur. Bu işlem genelde bir düzlemin normalini bulmak için kullanılır.

image004.gif (1952 bytes)

Yukarıdaki şekilde a ve b vektörleri A düzlemi üzerindedir. C vektörü ise bu düzleme dik olan vektördür. Cross(a, b) işlemi ile c vektörü elde edilebilir.

Cross işlemi söyle hesaplanabilir:

c.x = a.y*b.z - b.y*a.z
c.y = a.z*b.x - b.z*a.x
c.z = a.x*b.y - b.x*a.y

C vektörünün yönünü kol kafa yöntemiyle bulabilirsiniz. İlk vektör(a) sağ kolla ikinci vektör(b) sol kolla gösterilirse kafamızın yönü normal vektörünün yönünü gösterir.

Ersin K. :: 2003 :: www.oyunyapimi.org
  

[ Geri Dön: Oyun Yapımı (Genel) | Dökümanlar İndeksi ]





Web site Engine's code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.