Vektörler ve Vektörlerle Temel İşlemler
Vektörler bizim oyun ve simülasyon yazılımlarımızda önemli yere sahiptir. Biz hesaplamalarımızı matematiğin farklı alanlarını temel alıp yapabiliriz fakat en optimize ve hızlı seçenek vektörlerdir. Oyun ve simülasyon hedefli yazılım dünyasında vektörler algoritmaların en önemli yapı taşlarından biri olmuştur. Biz bu konuyu daha çok 3 boyutlu uzaydaki örneklerle değil, 2 boyutlu uzaydaki örneklerle işleyeceğiz.
Vektör Nedir?
Vektörün ne olduğunu hepiniz standart öğretim hayatınızda görmüşsünüzdür. Vektör skaler bir büyüklüğü olan, yönü olan bir niceliktir. Oyunlarımızda ve simülasyon projelerimizde her nesnenin,noktanın koordinatlarını, hız, kuvvet gibi değerleri bir vektör olarak düşünebiliriz.
Vektörlerde Toplama İşlemi (Add)
Vektörlerde toplarken iki vektörün x ve y değerlerini toplarız. 2 vektörün toplamı şekilde görüldüğü gibi uç uca eklenmiş 2 vektörün bileşke vektörü dediğimiz, başlangıç noktası ile bitiş noktasını birleştiren yeni bir vektörü verir.
toplam_vektor=vec2(v1.x+v2.x,v1.y+v2.y);
Vektörlerde Çıkarma İşlemi (Subtrack)
Vektörlerde çıkarma işlemi de tıpkı toplama işlemindeki gibi, 2 vektörün x ve y değerleri birbirinden çıkartılır. Çok sık yaptığımız bir işlemdir. Şekilde görüldüğü gibi iki farklı yöndeki vektörü birbirinden çıkardığımızda bize 2 vektörün fark vektörünü, diğer bir bakış açısıyla 2 vektörü bir üçgenin 2 kenarı olarak düşünürsek, bize 3. kenarı verir.
fark_vektor=vec2(v1.x-v2.x,v1.y-v2.y);
Vektörün büyüklüğü
Bir vektörün skaler büyüklüğünü bulmak için trigonometriden bildiğimiz pisagor teoremini kullanabiliriz. Çok sık yapacağımız işlemlerden biridir.
v1_buyukluk=sqrt(v1.x*v1.x + v1.y* v1.y);
Birim Vektörü - (Normalize ,Unit)
Birim vektörü d büyüklüğü olan vektörün 1 birim büyüklüğündeki halini verir, aslında yön belirtici vektörü olarak da tanımlayabiliriz. Trigonometride 1 birimlik çember vardır belki hatırlarsınız, bir birimlik vektörün mantığı ile bir birimlik çemberdeki mantık hesaplamaları birbirine benzerdir.
Bir birimlik vektörü bulmak için vektörün x ve y değerleri, vektörün skaler büyüklüğüne bölünür.
birim_vektor.x=vektor.x/vektor_buyuklugu
birim_vektor.y=vektor.y/vektor_buyuklugu
Ve evet tahmin ettiğiniz gibi vektörün açısını a kabul edersek eğer; birim vektörün x değeri, o vektörün cos(a) değerine, y değeri o vektörün sin(a) değerine eşittir.
Terim olarak normalizasyon olarak da geçer, fakat bunu bir başka terim olan normal vektörler ile karıştırmayınız.
Vektör Normali
Vektör normali bir vektörün kendi açısına dik olan vektördür, bulması çok basittir. Saat yönü mü, saat yönünün tersi mi konusu için internette sağ el kuralını araştırabilirsiniz. Fakat her ikisi için de nasıl yapacağımızı kodlarla görelim;
//Saat yönüne doğru
var vektor_normali=new vektor(-v.y,v.x);
//Saat yönünün tersine doğru
var vektor_normali=new vektor(v.y,-v.x);
Kapanış
Bu yazıda vektörler ve vektörlerle ilgili temel işlemleri öğrenmiş olduk. Diğer önemli işlemler nokta çarpımı (dot product), dik nokta çarpımı (perp dot product yada 2d cross product) gibi işlemlerdir. Fakat bunları iyi anlayabilmek için bilmemiz gereken temel şeyler var. Sonraki yazımızda vektörlerle yapacağımız işlemlerin temelinde bulunan kosinüs teoremini ve ıspatını inceleyeceğiz.
Yorumlar
Yorum Gönder