How to| 创建带有样条基元的图形
Mathematica 提供了完全集成的样条图形基元,例如 Bézier 曲线、B-样条曲线和 B-样条曲面等. 样条基元支持全部范围的用户控件,例如任意次数和样条的一种有理形式等. 样条基元为创建复数图形提供了一种简单的方法.
BezierCurve 画出一条由给定控制点定义的复合 Bézier 曲线. 缺省时使用三次 Bézier 曲线:
| Out[85]= |  |
将 BSplineCurve 用于 Graphics 创建一条7个控制点组成的三次 B-样条曲线:
| Out[93]= |  |
一般地,样条曲线不经过控制点. 然而,它们经过端点:
| Out[90]= |  |
选项 SplineDegree 控制代表样条曲线的多项式的次数. 通常,次数越高,曲线越平滑.
这里,通过使用 Table 对 BSplineCurve 迭代,并且令 SplineDegree 由1到6变化,产生了6个具有相同控制点集合的不同样条曲线:
| Out[88]= |  |
选项 SplineKnots 为 B-样条曲线的形状提供详细控制. 如果不指定 SplineKnots 的值,Mathematica 按照这样的方式给出默认节点序列,即使生成的曲线整体平滑且端点以内插值替换:
| Out[2]= |  |
这是同一曲线,不同之处是默认的节点值显式给出. 第一个和最后一个
重复节点使得曲线经过节点,其中
是样条次数. 其余节点均匀分布:
| Out[133]= |  |
通过在中间重复节点值
,可以降低曲线的平滑度:
| Out[134]= |  |
当 SplineClosed 选项的设置为 True 时,Mathematica 将创建一条平滑闭合的 B-样条曲线:
| Out[3]= |  |
| Out[4]= |  |
选项 SplineWeights 可用于指定每个点的权重. 曲线将向权重较大的点拉近:
如果 SplineWeights 没有明确设置,Mathematica 为每个点指定相等的权重:
| Out[7]= |  |
注意曲线被拉向中间的点,SplineWeights 为该点指定的权重为5:
| Out[8]= |  |
从数学角度而言,非均匀的权重创建的是有理 B-样条函数, 也被称作 NURBS. NURBS 能够表示一般 B-样条不能表示的形状. 例如,通过设定 SplineWeights 为
中的值,设定 SplineKnots 为
中的值,使用 BSplineCurve 创建一个精确的圆环:
| Out[108]= |  |
三维样条曲线可以通过三维点创建:
| Out[9]= |  |
| Out[10]= |  |
通过将样条用 Tube 包装,可以创建三维管状样条曲线. 在这里,管半径为0.2:
| Out[11]= |  |
| Out[12]= |  |
通过将一个半径列表与控制点联合,可以创建具有不同半径的管:
| Out[15]= |  |
BSplineSurface 创建一个由三维点阵定义的张量积 B-样条曲面:
| Out[160]= |  |
BSplineCurve 所有选项的工作方式相同. 然而,对于曲面,您可以对它们在每个参数方向上分别指定. 例如,下面的 SplineDegree 设置创建了一条 B-样条曲线,它在一个方向上是一次,而在另一个方向上是3次:
| Out[162]= |  |
与 B-样条曲线相似,有理曲面,或称 NURBS 曲面,可以使用 SplineWeights 创建. 许多电脑辅助设计应用程序使用 NURBS 表示工业曲面. 下面的例子生成一个直角圆柱管:
| Out[8]= |  |