Multivariate B-Spline Surface


 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
    }
  

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comments:

Post a Comment

UNIVERSITAS TRISAKTI - Takwa Tekun Terampil - Asah Asih Asuh - Setia Satria Sportif

Total Pageviews