BSplineFunction[{pt1,pt2,…}]
表示一个 B 样条函数,它的曲线由控制点 pti 定义.
BSplineFunction[array]
表示关于曲面或高维流形的 B 样条函数.
BSplineFunction
BSplineFunction[{pt1,pt2,…}]
表示一个 B 样条函数,它的曲线由控制点 pti 定义.
BSplineFunction[array]
表示关于曲面或高维流形的 B 样条函数.
更多信息和选项
- BSplineFunction 也被称为基样条或者非均匀有理 B 样条 (NURBS).
- BSplineFunction[…][u] 给出关于参数 u 的一个 B 样条曲线的点.
- BSplineFunction[…][u,v,…] 给出关于参数 u,v,… 的一个普通 B 样条曲线的点.
- BSplineFunction[{pt1,pt2,…}] 表示曲线的嵌入维由列表 pti 的长度给出.
- BSplineFunction[array] 可以处理任意长度的数组,表示任意维的流形.
- BSplineFunction[array] 表示的流形的维数由 ArrayDepth[array]-1 给出. 数组最低层的列表长度定义了嵌入维.
- BSplineFunction[array,d] 创建一个 d 元 B 样条函数.
- 缺省下参数 u,v,… 在曲线或其它流形的域上从 0 到 1 变化.
- 可以给出以下选项:
-
SplineDegree Automatic 多项式基的次数 SplineKnots Automatic 样条的节点序列 SplineWeights Automatic 控制点的权重 SplineClosed False 是否用封闭样条 - 缺省下 BSplineFunction 用三次样条.
- 选项设置 SplineDegree->d 指定潜在的多项式基应有最大阶 d.
- 在缺省情况下,在参数空间内均匀选择节点,并增加其它节点,使得曲线从第一个控制点开始,最后一个控制点结束.
- 在 SplineKnots 的一个显式设置下, 多项式基的阶由指定节点的数目和控制点的数目确定.
- 在缺省设置 SplineWeights->Automatic 下,所有控制点选择有相等的权重,与一个多项式 B 样条曲线一致.
- 在设置 SplineClosed->{c1,c2,…} 下,在 ci 为 True 的方向 i 连接边界.
范例
打开所有单元 关闭所有单元基本范例 (2)
pts = {{1, 1}, {2, 3}, {3, -1}, {4, 1}, {5, 0}};f = BSplineFunction[pts]f[.5]Show[Graphics[{Red, Point[pts], Green, Line[pts]}, Axes -> True], ParametricPlot[f[t], {t, 0, 1}]]pts = Table[{ Cos[2Pi u / 6]Cos[v], Sin[2Pi u / 6]Cos[v], v}, {u, 6}, {v, -1, 1, 1 / 2}];f = BSplineFunction[pts, SplineClosed -> {True, False}]Show[Graphics3D[{PointSize[Medium], Red, Map[Point, pts]}], Graphics3D[{Gray, Line[pts], Gray, Line[Transpose[pts]]}], ParametricPlot3D[f[u, v], {u, 0, 1}, {v, 0, 1}]]范围 (4)
f = BSplineFunction[RandomReal[1, {10, 2}]]f[.5]ParametricPlot[f[u], {u, 0, 1}]pts = Table[{i, RandomReal[10], RandomReal[10]}, {i, 10}];g = BSplineFunction[RandomReal[1, {10, 3}]]g[.5]ParametricPlot3D[g[u], {u, 0, 1}]f = BSplineFunction[RandomReal[1, {10, 10, 1}]]f[0.5, 0.5]Plot3D[f[x, y], {x, 0, 1}, {y, 0, 1}]f = BSplineFunction[RandomReal[1, {5, 5, 5, 1}]]f[.5, .5, .5]ContourPlot3D[f[u, v, w], {u, 0, 1}, {v, 0, 1}, {w, 0, 1}, Mesh -> None]推广和延伸 (1)
SparseArray 可以和 BSplineFunction 联用:
pts = SparseArray[{i_, j_} /; Abs[i - j] < 3 :> Cos[Abs[i - j]], {6, 6}]f = BSplineFunction[pts, 2]Plot3D[f[u, v], {u, 0, 1}, {v, 0, 1}]选项 (6)
SplineDegree (2)
pts = RandomReal[1, {10, 2}];ParametricPlot[BSplineFunction[pts, SplineDegree -> 1][u], {u, 0, 1}]ParametricPlot[BSplineFunction[pts, SplineDegree -> 2][u], {u, 0, 1}]pts = RandomReal[1, {7, 5, 1}];Plot3D[BSplineFunction[pts, SplineDegree -> {1, 3}][u, v], {u, 0, 1}, {v, 0, 1}, Mesh -> None]SplineKnots (3)
SplineKnots->Automatic 以使曲线整体平滑的方式生成纽结:
pts = {{0, 0}, {0, 2}, {2, 3}, {4, 0}, {6, 3}, {8, 2}, {8, 0}};Graphics[{Green, Line[pts], Red, Point[pts], Black, BSplineCurve[pts, SplineKnots -> Automatic]}]pts = {{0, 0}, {0, 2}, {2, 3}, {4, 0}, {6, 3}, {8, 2}, {8, 0}};Graphics[{Green, Line[pts], Red, Point[pts], Black, BSplineCurve[pts, SplineKnots -> {0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2}]}]pts = {{0, 0}, {0, 2}, {2, 3}, {4, 0}, {6, 3}, {8, 2}, {8, 0}};Graphics[{Green, Line[pts], Red, Point[pts], Black, BSplineCurve[pts, SplineKnots -> "Unclamped"]}]将不固定的纽结与 SplineClosed 一起使用将形成均匀周期性 B 样条曲线:
pts = {{0, 0}, {1, 0}, {1, 1}, {0, 1}};Graphics[{FaceForm[], EdgeForm[Green], Polygon[pts], Red, Point[pts], Black, BSplineCurve[pts, SplineClosed -> True, SplineKnots -> "Unclamped"]}]SplineWeights (1)
pts = {{0, 0}, {1, 1}, {2, -1}, {3, 0}, {4, -2}, {5, 1}};Graphics[{Point[pts], BSplineCurve[pts, SplineWeights -> Automatic]}]Graphics[{Point[pts], BSplineCurve[pts, SplineWeights -> {1, 1, 10, 1, 1, 1}]}]文本
Wolfram Research (2008),BSplineFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/BSplineFunction.html.
CMS
Wolfram 语言. 2008. "BSplineFunction." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/BSplineFunction.html.
APA
Wolfram 语言. (2008). BSplineFunction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/BSplineFunction.html 年
BibTeX
@misc{reference.wolfram_2026_bsplinefunction, author="Wolfram Research", title="{BSplineFunction}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/BSplineFunction.html}", note=[Accessed: 06-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_bsplinefunction, organization={Wolfram Research}, title={BSplineFunction}, year={2008}, url={https://reference.wolfram.com/language/ref/BSplineFunction.html}, note=[Accessed: 06-October-2026]}