1 Mart 2012 Perşembe

Flash AS3-İki Nokta Arasındaki Açı


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 :
pisagor
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);
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ı
g1
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