Plazma sayı 2, sayfa 155

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 155

Fakat yukarıdaki şekilde görüldüğü gibi bu bize kesikli bir fonksiyon sağlayacak. Özellikle yavaş hareketlerde bu tabloyu kullanmak, göze bir takılma hissi verecek. Örneğin cisim yumuşak bir şekilde dönmek yerine ani atlamalarla ilerleyecek. Eğer amacımız sadece hız kazanmaksa ve yumuşaklığı kaybetmek umurumuzda değilse kullanabileceğimiz en iyi yöntem bu. Ama hem hız hem de yumuşaklık istiyorsak tablonun kullanımına ufak bir optimizasyon yapabiliriz.

İstediğimiz açının bir yanındaki tablo elemanını kullanmak yerine, her iki yanındaki bilgiyi de kullanabiliriz. Örneğin Cos(14.5) için Cos(14)+Cos(15)/2.0f demek, gerçeğine çok daha yakın sonuçlar verecekti. Yapmamız gereken tabloda iki değerin arasında sinüs ve kosinüs fonksiyonlarının doğrusal değiştiğini varsaymak. Bir açının sinüsü istendiğinde, bu açının tabloda bulunduğu aralıklardaki sınıra ne kadar yakın olduğuna bakıp ona göre bir değer hesaplamak.

Örneğin tablomuzda Sin(54) = 0.80902f ve Sin(55) = 0.81915f ve bulmak istediğimiz değer de Sin(54.7f) olsun. İlk yöntemimize göre şöyle bir sonuç alacaktık:

Sin(54.7f) = Sin(54) = 0.80902f

Eğer daha akıllı bir sistem geliştirip bir önceki değil de en yakındaki tablo değerine bakarsak:

Sin(54.7f) = Sin(55) = 0.81915f

Yeni yönteme göre ise bu iki değerden herhangi birini değil, bunların belli oranlarının toplamını kullanmamız gerekiyor. 54.7f derece, 54 dereceye 0.7f yakın, 55 dereceye ise 0.3f. Sınırların değerlerini uzaklıklarla ters orantılı olarak kullanırsak:

Sin(54.7f) = Sin(54) * 0.3f + Sin(55) * 0.7f

Klavyeyle gezinmek için ← ve → tuşları.