人物10372 項目5170 室內580 家居及產品163 文章2375 方案1373 攝影783 視頻225 圖書201 讀者來稿 最新評論21,701 所有作品11345 所有圖片154,143
NURBS曲線DeBoor算法(Grasshopper數學插件)
這個grasshopper組件可以讓你通過設定曲線的度數、控制點、重量向量和結點向量來演示如何生成NURBS曲線。其結果是讓用戶可以直觀的看到最一般意義上的NURBS曲線的生成。
來源:互聯網

16 June 2020

● 版本 0.0.2 alpha
● 版權 (c) 2019-2020 mahaidong
● Supported by ikuku.cn & caad.xyz

 

這個插件能做什么?

演示Nurbs曲線的DeBoor算法

僅僅靠自己的抽象想象力去理解不同的控制點位置(point)、權重向量(weight)和結點向量(knot)對NURBS曲線的影響是很難獲得直觀的理解與認識的.

這個grasshopper組件可以讓你通過設定曲線的度數、控制點、重量向量和結點向量來演示如何生成NURBS曲線。其結果是讓用戶可以直觀的看到最一般意義上的NURBS曲線的生成.

同時在曲線的繪制的時, 直接展示了與DeBoor算法相關的輔助線,及輔助線如何生成曲線.

DeBoor算法參考文獻: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/de-Boor.html

什么是DeBoor算法?

● DeBoor算法是DeCasteljau算法的B-spline版本
● 通過DeBoor算法可以精準的描繪B-spline
● 通過控制點及結點向量knot的值u,通過遞歸求得曲線上的點的位置
● DeBoor算法也可以用于Nurbs曲線的生成

1

BSpline的DeBoor算法偽代碼, python源碼見github

Screen Shot 2020-06-16 at 18.32.14

5階BSpline的演示

3

10個控制點
knots= [0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5]
weight= [1, 1, 1, 1, 1, 1, 1, 1, 1,1]

NURBS曲線的DeBoor算法

De Boor的算法也適用于NURBS曲線。我們只需將每個控制點乘以它的權重,將NURBS曲線轉換為4D B-spline曲線,在這條4D B-spline曲線上執行de Boor算法,然后將得到的曲線上的點的xyz除以w,就可以將曲線投影回來. python源碼見github

圓的Nurbs擬合演示

4

9個控制點
knots= [0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
weight=[1, 0.707107, 1, 0.707107, 1, 0.707107, 1, 0.707107, 1]

 

演示Bezier曲線與Bernstein多項式

參數曲線的范疇

5

什么是Bezier曲線

Bezier曲線的數學基礎–伯恩斯坦多項式–早在1912年就已為人所知,但直到大約50年后,法國工程師皮埃爾-貝茲爾(Pierre Bézier)才將這些多項式應用于圖形,并將其廣泛宣傳,他用它們在雷諾公司設計汽車車身。這些曲線的研究最早是在1959年由數學家Paul de Casteljau利用de Casteljau的算法發展起來的,該算法是一種數值穩定的方法,用于評估法國另一家汽車制造商Citro?n的Bézier曲線。

關于Bernstein多項式的介紹見: http://www.663518.tw/post/1872817

Bezier曲線的數學公式

Bernstein多項式

6

 

 

其中:

7

 

 

n階貝塞爾曲線的定義

8

 

 

n=1:
當n=1的時候可以用來表示直線.

9

 

17

 

 

 

 

n=2:
當n=2的時候可以用來表示曲線.

18

 

11

 

 

 

 

5階貝塞爾曲線的演示

11

 

12

 

如何安裝與使用?

Github源碼下載: https://github.com/caadxyz/DeBoorAlgorithmNurbs

方法一
● 拷貝dist文件夾中的ghuser 文件到 User Objects 文件夾
● 打開dist文件夾中的案例文件 DeBoorAlgorithmNurbs.gh 查看演示效果

方法二
● 打src文件夾中的案例文件 DeBoorAlgorithmNurbs.gh 查看演示效果

b-spline:

13

nurbs circle:

14

bezier curve:

15

 

todo

● Single Insertion
● Inserting a Knot Multiple Times
● compute tangent and normal vectors at a point on a Bézier curve
● b-spline surface
● curve interpolation

 

許可證

你可以根據自由軟件基金會發布的GNU Lesser General Public License版本3的條款重新發布它和/或修改它。

 

插件下載

food4rhino: https://www.food4rhino.com/app/de-boors-algorithm
Github源碼下載: https://github.com/caadxyz/DeBoorAlgorithmNurbs

 

相關文章

建筑師為什么要會python編程?
Caad4Rhino:建筑繪圖工具插件
Rhino及Bob McNeel的故事(轉載)
曲線系列: 計算機曲線spline簡史(轉載)
曲線系列: 什么是Bernstein多項式?

 

建筑師編程課推廣

ikuku精選課 Python4Rhino 建筑師編程課 2020.6.27開始線上直播!講師:馬海東

16

 

馬海東 等1人贊過
2020.06.17
請帖個標簽,寫個點評吧!
標簽(多個標簽用逗號隔開) 登錄可保存標簽
綁定新浪微博可評論

小貼士


標簽收藏可以有利于您以后的內容分類管理
->進入收藏管理頁。


blog comments powered by Disqus
湖北新11选5走势图遗漏