FLash'da trigonometri:
Flash, animasyonlarda kullanmak üzere trigonometrik fonksiyonlari destekler. Bu fonksiyonlar sinüs, kosinüs, tanjant, arksinüs, arkkosinüs ve arktanjanttir. Simdi sirasiyla bu fonksiyonlari kisaca inceleyelim.
Sinüs:
Sinüs kavrami temel olarak dik ücgendeki 90 derece olmayan diger iki acinin karsi kenarinin hipotenüse oranidir. Actionscript dilinde Math.sin(aci) seklinde yazilir. Asagidaki resim 30 derecelik bir acinin sinüsünü göstermektedir:
Acinin karsi kenari 1 birim, hipotenüsü 2 birim uzunluktadir. Dolayisiyla Math.sin(30) bize 1/2, yani 0.5 degerini vermelidir. Hemen deneyelim, programi calistirip actions panelini acin ve asagidaki kodu yazin:
sinus=Math.sin(30);
trace(sinus);
Orda duralim iste, flash bize bu hesaplamanin sonucunu −0.988031624092862 olarak verdi.. Peki hata nerede ?? Aciyi radyan'a cevirmeyi unuttuk degil mi ;) Eminim bu hatayi baslarda benim gibi herkes yapiyordur. Simdi dogru kodu yazalim:
sinus=Math.sin(30*Math.PI/180);
trace(sinus);
Simdi oldu, yukaridaki hesaba göre flash bize 0.5 sonucunu verdi. Kücük bir sorun daha var, simdi bunu inceleyelim, yukaridaki örnek normal bir ücgene göre düsünülmüs, peki flash'in koordinat sistemine göre yukaridaki ücgenin uzunluklari nasil degisecek.? Hemen resmi inceleyelim:
Yani hesaplamalarimizi normal koordinat sistemine göre yapsaydik yanlis sonuc alacaktik, dolayisiyla örnegimizi flash koordinat sistemine göre düzenliyoruz ve dogru sonucu asagidaki sekilde aliyoruz:
sinus=Math.sin(-30*Math.PI/180);
trace(sinus);
Kosinüs:
Kosinüs fonksiyonu da sinüse benzer mantikla isler, fakat bu sefer ücgendeki karsi kenari degil, komsu kenari dikkate aliriz. Yani bir acinin kosinüsü kendisine komsu olan kenarin hipotenüse oranidir. Yukaridaki örnegi kosinüs olarak düzenlersek:
kosinus=Math.cos(-30*Math.Pi/180);
trace(kosinus);
Hesaplama sonucunda flash bize yaklasik olarak -0.865 degerini verecektir.
Tanjant:
Diger bir fonksiyon ise tanjanttir ve Math.tan(aci) seklinde hesaplanir. Herhangi bir acinin tanjanti sinüsünün kosinüsüne oranidir, yani Math.sin(aci)/Math.cos(aci).
Dogruyu söylemek gerekirse hesaplamalarimizda tanjanti cok nadir kullanacagiz, bunun yerine sinüs ve kosinüs fazlasiyla isimizi görecektir.
Arksinüs ve Arkkosinüs:
Bu iki fonksiyon da tanjant gibi cok az kullanilir, fakat bu fonksiyonlarin da var oldugunu ve nasil islediklerini bilmek her zaman faydalidir. Temel olarak arksinüs fonksiyonu sinüs fonksiyonunun tersidir. Sinüs ile bir acinin sinüsü hesaplanirken, arksinüs ile sinüsü bilinen bir acinin kendisi bulunur. Örnegin:
Math.sin(aci)=1/2 ise, Math.asin(1/2) bize aciyi verecektir, ki o da bu örnege göre 30 derece, yani pi/6'dir. Benzer sekilde arkkosinüs de kosinüs fonksiyonunun tersidir. Sanirim onu da ayrica aciklamaya gerek yok.
Arktanjant:
Tahmin edebileceginiz gibi bu fonksiyon da tanjant fonksiyonunun tersidir. Acinin sinüs/kosinüs oranini verirsiniz ve acinin ne oldugunu bulursunuz, örnegin, 30 derecenin tanjanti 0.577'dir (yuvarlatilmis olarak).
aci=Math.atan(0.577*180/Math.PI);
trace(aci);
kodlarini yazdiginizda flash size 30'a yakin bir deger verecektir, sebebi de yukaridaki tanjant degerini yuvarlatmamizdir. Peki bu fonksiyon bize istedigimiz degeri veriyorsa flash'da neden ikinci bir arktanjant fonksiyonu var..? Hemen resmi inceleyelim:
Resimdeki 4 ücgenden A ve B pozitif x yönünde, C ve D negatif yönde. Bunun yaninda A ve D negatif y yönünde, B ve C negatif y yönünde. Simdi her ücgende bulunan farkli yönlerdeki 26.57° 'lik acinin tanjantlarini hesaplayalim:
Simdi diyelim ki elinizdeki acinin tanjant degerini hesapladiniz ve actionscript kodunuzu yazarak (Math.atan(0.5)) radyan cinsinden aciyi buldunuz, dereceye cevirdiniz ve acinin 26.57° oldugunu gördünüz. Peki bu aci sekildeki hangi ücgene ait ? B mi D mi ?
iste bu noktada yardimimiza Math.atan2(y,x) fonksiyonu yetisiyor. Bu, flash'in diger bir arktanjant fonksiyonudur ve hesaplamalarinizin hemen hemen hepsinde bu formülü kullanacaksiniz. Bir örnekle aciklamak gerekirse:
aci=Math.atan2(-1,-2)*180/Math.PI;
trace(aci);
islemi sonucunda flash bize -153.43 degerini, yani asil aradigimiz aciyi verecektir.
Bu kadar teori simdilik yeter diyelim ve bir sonraki derste harekete gecelim.. Takip ettiginiz icin tesekkürler..