B-Spline Surface Algorithm
Pada permukaan B-Spline digunakan knot sebagai titik – titik yang muncul
pada segmen antar titik kontrol. Knot dalam program ini terdiri dari knot u dan knot v yang bernilai
antara 0.0 s/d 1.0, dimana intervalnya tersimpan dalam knot vektor. Jika nilai
knot yang didapat melebihi nilai knot vektornya, maka knot akan benilai 0. Algortima yang digunakan dalam pembuatan permukaan B-Spline adalah algoritma Cox de Boor :
Selama m =
0 < total_knot, jalankan {
Hitung nilai
knot_u
Selama n = 0
< total_knot, jalankan {
Hitung
nilai knot_v
Selama
i = 0 < derajat, jalankan {
Selama
j = 0 < derajat, jalankan {
Fungsi
Cox de Boor knot_u
Titik_kontrol_akhir
= titik_kontrol_awal*nilai_basis
j
= j + 1
}
i
= i + 1
}
Selama
i = 0 < derajat, jalankan {
Fungsi
Cox de Boor knot_v
Titik_kontrol_akhir
= titik_kontrol_awal * nilai_basis
i
= i + 1
}
Gambarkan
permukaan B-Spline
n
= n + 1
}
m = m + 1
}
Sedangkan jalannya
fungsi (baik knot u maupun knot v) dari algoritma Cox de Boor yakni .
k
=degree + 1
Selama
a = 0 < degree, jalankan {
Jika k == 1, maka {
Jika
knot_vektor[a] <=knot dan knot < knot_vektor[a+1], maka {
nilai_basis
= 1.0
}
nilai_basis
= 0.0
}
Den1 = knot_vektor[a+k-1] –
knot_vektor[a]
Den2 = knot_vektor[a+k] –
knot_vektor[a+1]
Den 1 = 0
Den2 = 0
Jika
Den1 > 0, maka {
Eq1 = ((knot – knot_vektor[a]) / Den1) *
CoxDeBoor[knot, a, k–1, knot_vektor]
}
Jika Den2 > 0, maka {
Eq2 = ((knot_vektor[a+k] – knot) /
Den2) * CoxDeBoor[knot, a+1, k-1, knot_vektor]
}
nilai_basis = Eq1 + Eq2
}
0 comments:
Post a Comment