貝氏曲線 (Bezier Surface)

製作重點:[br][list=1][*]先任意設定一個由空間點座標所構成的獨立 (independent) 矩陣,例如:[br][code]mat = {[br] {(0, 0, 0), (0, 1, 1), (0, 2, 0), (0, 3, 1)}, [br] {(1, 0, 0), (1, 1, 1), (1, 2, 0), (1, 3, 1)}, [br] {(2, 0, 0), (2, 1, 1), (2, 2, 0), (2, 3, 1)}[br]}[br][br][/code][/*][*]計算 Bezier Surface 多項式次數:[br][code]m = Dimension[mat] - 1[/code] [br][code]n = Dimension[Element[mat, 1]] - 1[br][br][/code][/*][*]計算 Bezier Surface 多項式:[br][br]bx(x,y) = Sum[Sum[Sequence[Sequence[[br] [b][color=#ff0000]x[/color][/b]([b][color=#0000ff]Element[/color][/b][mat, j + 1, k + 1]) [br] BinomialCoefficient[m, j] BinomialCoefficient[n, k] [br] (1 - x)^(m - j) x^j (1 - y)^(n - k) y^k, [br]k, 0, n], j, 0, m]]][br][br]這個就是 Bezier Surface:[br][br][math]\sum_{j=0}^m\sum_{k=0}^nP_{jk}\cdot\binom{m}{j}\left(1-x\right)^{m-j}x^j\cdot\binom{n}{k}\left(1-y\right)^{n-k}y^k[/math][br][br]的 x 座標,其中 [math]P_{jk}[/math] 就是 mat 中的點。[br][br][/*][*]Bezier Surface 的 y 座標與 z 座標分別為:by(x,y), bz(x,y)[br]作法跟上個步驟類似。[br][br][/*][*]畫出 Bezier Surface:[br]Surface[bx(s, t), by(s, t), bz(s, t), s, 0, 1, t, 0, 1][br][br][/*][/list][br]這個檔案內部包含了兩個主要的自製工具:[br][br][list][*][b][color=#0000ff]BezierSurface[/color][/b][<matrix of 3D points>][br]由上面的步驟 5 產生,可用於任意的 m x n 點矩陣。[br][br][/*][*][b][color=#0000ff]Net3D[/color][/b][<matrix fo 3D points>][br]將 m x n 點矩陣相鄰的點用線段連起來(輔助用)。[/*][/list]

Information: 貝氏曲線 (Bezier Surface)