Bu derste iki nokta arasındaki açıyı hesaplamayı anlatacağım.
Yine oyunlarda çok çok kullanılar bir prototip…
İki nokta arasındaki açıyı bulmak için, iki noktanın
x ve
y değerlerini bilmemiz gerekir.
Bu değerler:
var x1:Number = 20; //Birinci x değeri
var y1:Number = 20; //Birinci y değeri
var x2:Number = 30; //İkinci x değeri
var y2:Number = 30; //İkinci y değeri
var uz1:Number = x1-x2; //1. Uzunluk
var uz2:Number = y1-y2; //2. Uzunluk
olsun.
İki nokta arasındaki açıyı bulmak için
tanjant fonksyonunu kullanacağız.
Tanjant, açının karşısındaki uzunluk bölü komşu uzunluktur :
tan(aci) = uz2 / uz1
Açıyı bilmediğimiz ve uzunlukları bildiğimiz için
arctanjant (ters tanjant) ı kullanmalıyız.
Buna göre matematiksel olarak :
tan(aci) = uz2 / uz1
ise
arctan(uz2 / uz1) = aci
dır.
Şimdi bunu Flash as3 olarak yazalım:
Flashta değerler
Radyan olarak geri döner
Ama biz
derece cinsinden istediğimiz için
doğru orantı ile dereceye çevirelim :
RandyanAci = Math.atan2(uz2,uz1);
ise
DereceAci = RandyanAci*180/Math.PI;
dir.
Son olarak kodumuz :
var x1:Number = 20; //Birinci x değeri
var y1:Number = 20; //Birinci y değeri
var x2:Number = 30; //İkinci x değeri
var y2:Number = 10; //İkinci y değeri
var uz1:Number = x2-x1;
var uz2:Number = y1-y2;
var RandyanAci:Number = Math.atan2(uz2,uz1);
var DereceAci:Number = RandyanAci*180/Math.PI;
trace(DereceAci);
Olacaktır.
Dikkat : Burda çok önemli bir nokta var
var uz1:Number = x2-x1;
var uz2:Number = y1-y2;
Yazarken
x1-x2 değilde
x2-x1 yazdık; (Flash’ı günlük kullandığımız koordinat düzlemine benzetmek için)
Bunun nedeni Flash’ın koordinat düzleminde
4.bölgede(sağ altta) olması
Yani asıl denklem (Kağıt üzerinde işlem için)
var uz1:Number = x1-x2;
var uz2:Number = y1-y2;
şeklinde olmalıdır.
Not : Yazdığım kodda açı hesaplanırken
x1,y1 orjin olarak kabul edilir.