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
İ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:
Math.atan2(uz2,uz1);
Ama biz derece cinsinden istediğimiz için
doğru orantı ile dereceye çevirelim :
RandyanAci = Math.atan2(uz2,uz1);
DereceAci = RandyanAci*180/Math.PI;
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);
Dikkat : Burda çok önemli bir nokta var
var uz1:Number = x2-x1; var uz2:Number = y1-y2;
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.
Hiç yorum yok:
Yorum Gönder