生活随笔
收集整理的這篇文章主要介紹了
计算机图形学:B样条画枫叶
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
B樣條繪制楓葉
B樣條算法介紹:
為了解決Bezier曲線的不足,B樣條曲線比Bezier曲線更貼近控制多邊形,曲線更光滑,其多項式的次數可根據需要指定,而不像Bezier曲線多項式的次數是由控制點的個數來確定。除此之外B樣條曲線的突出優點是增加了對曲線的局部修改功能,因為B樣條曲線是分段組成的,所以控制多邊形的頂點對曲線的控制靈活而直觀。修改某一控制點只引起與該控制點相鄰近的曲線形狀發生變化,遠處的曲線形狀不受影響,這種優點使得B樣條曲線廣泛應用于交互式自由曲線曲面設計。
B樣條曲線的定義:
給定m+n+1個控制點Pi(i=0,1,2,…,m+n ),可以定義m+1段n次的參數曲線
為n次B樣條基函數,其形式為
(0≤t≤1,k=0,1,2,…,n)
其中,
對于我所畫的楓葉,用到了48個控制點,所以就可以得到45條三次B樣條曲線。
部分代碼如下:
P
[0].x
=740;P
[0].y
=800;P
[1].x
=740;P
[1].y
=760;P
[2].x
=740;P
[2].y
=720;P
[3].x
=740;P
[3].y
=650;P
[4].x
=740;P
[4].y
=650;P
[5].x
=570;P
[5].y
=700;P
[6].x
=400;P
[6].y
=600;P
[7].x
=340;P
[7].y
=460;P
[8].x
=340;P
[8].y
=460;P
[9].x
=340;P
[9].y
=460;P
[10].x
=390;P
[10].y
=485;P
[11].x
=450;P
[11].y
=470;P
[12].x
=500;P
[12].y
=480;P
[13].x
=500;P
[13].y
=480;P
[14].x
=500;P
[14].y
=480;P
[15].x
=450;P
[15].y
=420;P
[16].x
=436;P
[16].y
=365;P
[17].x
=436;P
[17].y
=365;P
[18].x
=494;P
[18].y
=372;P
[19].x
=534;P
[19].y
=360;P
[20].x
=575;P
[20].y
=383;P
[21].x
=575;P
[21].y
=383;P
[22].x
=609;P
[22].y
=250;P
[23].x
=740;P
[23].y
=54;P
[24].x
=740;P
[24].y
=54;P
[25].x
=740;P
[25].y
=54;
P
[26].x
=871;P
[26].y
=250;P
[27].x
=905;P
[27].y
=383;P
[28].x
=905;P
[28].y
=383;P
[29].x
=946;P
[29].y
=360;P
[30].x
=986;P
[30].y
=372;P
[31].x
=1044;P
[31].y
=365;P
[32].x
=1044;P
[32].y
=365;P
[33].x
=1035;P
[33].y
=420;P
[34].x
=980;P
[34].y
=480;P
[35].x
=980;P
[35].y
=480;P
[36].x
=980;P
[36].y
=480;P
[37].x
=1030;P
[37].y
=470;P
[38].x
=1090;P
[38].y
=483;P
[39].x
=1140;P
[39].y
=460;P
[40].x
=1140;P
[40].y
=460;P
[41].x
=1140;P
[41].y
=460;P
[42].x
=1080;P
[42].y
=600;P
[43].x
=910;P
[43].y
=700;P
[44].x
=740;P
[44].y
=625;P
[45].x
=740;P
[45].y
=625;P
[46].x
=740;P
[46].y
=21;P
[47].x
=740;P
[47].y
=21;
以上是點的確定,需要繼續學習。。。。。。源代碼下次上傳到GitHub后再上傳連接。
下載地址
總結
以上是生活随笔為你收集整理的计算机图形学:B样条画枫叶的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。