10 Ağustos 2017 Perşembe

Trigonometrik Fonksiyonlar

Aşağıda trigonemetrik fonksiyonlarla ilgili aldığım notlar var.

Trigonometrik ve Kutupsal Sistem
Kutupsal koordinat sisteminin bir diğer ismi de polar sistem. İsimleri farklı gibi görünse de her ikisi de aynı şeyler. Ben bu yazıda kutupsal koordinat sistemi kelimesi yerine trigonometrik sistem kelimesini kullanmayı uygun buluyorum.
Bu sistemde 0 derece doğudan başlar. 90 derece ise kuzeye denk gelir.

Önemli Formüller
Şöyledir.
sin2α+cos2α=1
sin(α+β)=sin(α)cos(β)+cos(α)sin(β)
cos(α+β)=cos(α)cos(β)sin(α)sin(β)
PI Sayısı
PI Sayısı yazısına taşıdım

radyan nedir?
Radyan bir çok hesaplamada karşımıza çıkar. Bence bilinmesi gereken en önemli nokta PI radyan değeri, 180 dereceye denk gelir.
 radyandan dereceye döndürmek için
(radyan * 180 / PI) ;
dereceye radyana dönmek için
(derece * PI / 180) ;
yapılır.

C#'ta şöyle yapılır
private double DegreeToRadian(double angle)
{
   return Math.PI * angle / 180.0;
}
private double RadianToDegree(double angle)
{
   return angle * (180.0 / Math.PI);
}
Java'da Math.toDegrees() metodu da radyanı dereceye çevirir.

Eksi bir radyan değerini açıya döndürmek için aşağıdaki formül kullanılabilir.
public static double RadianToDegree(double radian)
{
    var degree = radian * (180.0 / Math.PI);
    if (degree < 0)
        degree = 360 + degree;

    return degree;
}

İç Açı
Özellikle istikamet hesaplarken işe yarar. İki çizgi arasındaki iç açı aşağıdaki gibi hesaplanır. İç açı dış açıdan küçüktür. Örneğin ilk açı 10, ikinci açı 300 derece olsun. Aradaki fark 70 derece çıkmalı.
angle = Math.abs(a1-a2);
if (angle > 180)
    angle = 360 - angle;
İki doğru arasındaki iç açı şöyle hesaplanır.

sin
sinüs yazısına taşıdım

cos
Kosinüs temel trigonometrik fonksiyonlardan birisi. Co eki complement anlamına gelir. cos aslında sin fonksiyonundan da çıkarılabilir. sin fonksiyonu cos'un 90 derece önünden gider.
cos(x)=sin(π/2−x)
ya da sinüs cosinüs'ün 90 derece arkasından gelir.
sin(x)=cos(π/2−x)
atan Nedir
Şöyle yaparız.
x = Math.toDegrees(Math.atan(0.5447))
atan2 Nedir?
atan2 yazısına taşıdım.

asi
sin fonksiyonunu tersini yapar.

acos
cos fonksiyonunun tersini yapar.

Bir fonksiyonun tersini almak (inverse) y = x şeklinde yazılan bir denklemde x ve y'nin yerini değiştirerek çözmek demektir.


arccos ile ile vektör arasındaki açıyı bulmak için aşağıdaki formül kullanılabilir.
Vektör ve açı şekildeki gibidir.

Önce iki vektör formülünden başlanır. a . b nokta çarpımını ifade eder. |a| × |b| ise vektörlerin büyüklüklerini (magnitude) yani uzunluklarını ifade eder. Sanırım uzunluğa norm veya euclidian norm da deniliyor.
a · b = |a| × |b| × cos(C)
Daha sonra acos ile açıyı bulmak için formül şu hale gelir.
C = acos ((a . b) / (|a||b|))
Şekildeki formül şu hale gelir.
C = acos (-6 x 5 + 8 x 12) / 10 * 13
C = acos (66 / 130)
C = 59.48976259
Vektörü X Derece Döndürmek
Formül aşağıdaki gibi
trigonometricAngle = atan2 (Y,X)
newAngle = trigonometricAngle + rotationAngle
length = sqrt ( (X^2) + (Y^2) )
X = length * cos (newAngle)
Y = length * sin (newAngle)

Pusulaya Açısına Göre X,Y koordinatlarını hesaplamak
Pusula Açısını Trigonometrik Açıya Çevirmek yazısına taşıdım.

Pisagor Teoremi
Pisagor teoremi dik üçgende kullanılır. 2 boyutlu uzayda iki nokta arasındaki mesafeyi hesaplamak için kullanılabilir.
x² + y² = r²
Örnek:

Y değerini bulmak içinse aşağıdaki gibi yaparız.
y = sqrt(r² - x²)
Öklid Uzaklığı
Pisagor teoremi iki boyutlu uzayda kullanılır. Çok boyutlu uzayda ise Öklid Uzaklığı kullanılır. 3 boyutlu uzayda mesafe şöyle bulunur. Önce iki nokta arasındaki mesafe hesaplanır.
v.x = p1.x - p0.x
v.y = p1.y - p0.y
v.z = p1.z - p0.z
Daha sonra nokta çarpımı (x,y,z'nin karelerinin toplamı) yapılır.
(v.x * v.x) + (v.y * v.y) + (v.z * v.z)
Mesafe nokta çarpımının kare köküdür.
distance = sqrt(dot(v, v))
Kosinüs Teoremi
Pisagor sadece dik üçgende kullanılır. Tüm üçgenlerde kullanılan formül ise kosinüs teoremi. c'nin uzunluğunu bulmak için a ve b'nin uzunluklarını ve de a ila ve arasındaki açıyı bilmek gerekir.
cKare = aKare + bKare - 2abcos (a ve b arasındaki açı)
Kosinüs Teoremi aynı zamanda Spherical Law Of Cosines teoreminin de çıkış noktasıdır.

Şekiller
Basit Shape Sınıfları yazısına taşıdım.

Sinüs Dalgası
Salınım
0-60 arasında salınım (oscilation) yapan basit bir fonksyion örneği burada. Sürekli tekrar eden bir sinyali salınım yapar hale getirmek için ilk yarıda [0-30] input * 2 ve daha sonra ikinci yarıda [30 - 60 ] 120 - input * 2 şeklinde kullanabiliriz. Böylece çıktımız hep 0 - 60 ve 60 - 0 arasında değişir.

Sinüs Dalgası
Sinüs dalgası f(x) = A sin(wX + p) formülü ile yazılır. A genliği, w ise frekansı gösterir. w değeri ile oynayarak dalganın, dalga boyu değişir. Örnek

Yüzde Hesaplama
Yüzde hesaplama için aşağıdaki basit formül kullanılır.
(currentX - minX) / (maxX - minX)
Hiperbolik Fonksiyonlar
Hiberbolik Fonksiyonlar ile atanh gibi fonksiyonlar geliyor. Şöyledir.
sinhxcoshxtanhx=isin(ix)=cos(ix)=itan(ix)

5 yorum:

  1. kardeş gerçekten çok teşekkürler böyle bir yazı yazdıgın için

    YanıtlaSil
  2. mail adresim aygokcukur@hotmail.com bir kaç sorum var

    YanıtlaSil
  3. C# DİLİNİ YADA BAŞKA BİR PROGRAMI KULLANARAK 3D OLARAK OLUŞTURULAN NESNENİN XYZ KOORDİNATLARINI NOT DEFTERİNE AKTARMA İMKANIMIZ VAR MI ACABA

    YanıtlaSil
  4. atan2 fonksiyonun tam anlayamadım ya. Acaba tekrar bana anlatırmısınız ? örnek vererek. Teşekkürler.

    YanıtlaSil
  5. Atan2 için örnek : X,Y ekseninde diyelim ki ben 0,0 noktasındayım. Yani merkezdeyim. Bir başka kişinin ise konumunu biliyorum. X = 10, Y = 10 gibi. Bu kişinin bana göre açısını hesaplamak için atan2 fonksiyonunu kullanırım. X eksenini 0 derece kabul ederim. atan2 (y,x) saatin tersi yönünde ilerler ve örneğin 10 derece döndürür. Eğer pusula kullanıyor olsaydım y eksenini 0 kabul ederim. Bu sefer atan2 (x,y) şeklinde çağırırım. Diğer kişinin açısını pusulaya göre bulurum.

    YanıtlaSil