Bezier Eğrisi ve Bernstein Karıştırma Formülü

Bezier Eğrisi ve Bernstein Karıştırma Formülü

937 Görüntülenme
0
0

Merhaba Değerli Java Dostları, 

Bu yazımda eğri oluşturma tekniklerinden biri olan Bezier yöntemi ve yöntem içerisindeki bir algoritma olan Bernstein karıştırma formülünden bahsedeceğim. Bezier yönteminde eğrimiz ilk ve son noktaya değmelidir. Eğer değmiyorsa işleyişte veya sunumda problem var demektir. Bu kural eğrimizin doğruluğunu kontrol etmekte oldukça kullanışlı ve basit bir yöntemdir. Bezier algoritması her adım için dışarıdan üç parametre alır. Bunları t, n, i olarak adlandırabiliriz. Önce algoritma formülünü verip sonra üzeriden devam edelim.

P(t) = Σni = 0 Pi * Jn, i

Jn, i =n! / (i! * (n – i)!) * ti * (1 – t)n – i

t => En dıştaki döngü değeri diyebiliriz. 0 – 1 aralığında belirtilen miktar kadar artarak devam eder. Örneğin adım miktarı 0.25 verildiyse, t 0, 0.25, 0.5, 0.75 ve 1 değerlerini alır.

n => Dışarıdan belli sayıda nokta verilerek bunlara eğri uydurulması istenir. n, burada verilen nokta sayısının bir eksiğidir. Zaten mantık olarak eğer dizi üzerinde işlem yapıyor ve ilk eleman da 0 oluyorsa son elemanın indis değeri nokta sayısından bir eksik olmalıdır.

i => O an üzerinde işlem yapılan noktanın indis değeridir. Eğer işlem ilk nokta üzerinde yapılıyorsa i = 0, ikinci nokta ise i = 1, …, son nokta üzerinde işlem yapılıyorsa i = n’ dir.

Yukarıdaki algoritmanın işleyişi şu şekildedir.

1 – t = 0′ dan t = 1 oluncaya kadar, t’ yi adım miktarı kadar arttır ve aşağıdaki işlemleri yap

2 – i = 0′ dan i = n oluncaya kadar, i’ yi bir arttır ve şu işlemi yap

3 – Pi noktasının x değerini Jn, i sonucu ile çarp ve yeni x değeri elde et

Pi noktasının y değerini Jn, i sonucu ile çarp ve yeni y değeri elde et

Bu yeni x ve y değerleri eğrinin geçeceği noktayı belirtir. Algoritma sonucunda çıkacak tüm noktalar birleştirince ortaya eğrimiz çıkacaktır. Ayrıca dikkat edilmesi gereken bir nokta Jn, i olarak geçen Bernstein karıştırma formülünün sonucu double bir değer çıkabilir ve buna göre de eğrinin geçeceği nokta double değer olabilir. İşlemler sırasında bunun göz önünde bulundurulması eğrinin daha doğru çıkmasını sağlayacaktır.

Bol Java’ lı günler dileğiyle…

Yazan: Faruk BOZAN (Yazılım Mimarı / Software Architect)

Yorum Yap

Kategoriler