基数样条

基数样条是联接成较大曲线的单个曲线序列。 样条由点数组和紧张参数指定。 基数样条顺利通过数组中的每个点;没有尖锐的角落,曲线的紧绷性没有突然的变化。 下图显示了一组点和一个通过集中每个点的基数样条。

显示通过六个定义点插图

物理样条是薄片木材或其他灵活材料。 在数学样条出现之前,设计人员使用物理样条绘制曲线。 设计师将样条放在一张纸上,并将其锚定在给定的一组点上。 然后,设计器可以通过用铅笔沿样条绘制来创建曲线。 给定的一组点可能会产生各种曲线,具体取决于物理样条的属性。 例如,具有高弯曲阻力的样条会产生与极其灵活的样条不同的曲线。

数学样条的公式基于灵活棒的属性,因此数学样条生成的曲线类似于曾经由物理样条生成的曲线。 正如不同紧张的物理样条将通过给定的点集产生不同的曲线一样,具有不同值的紧张参数的数学样条将通过给定的一组点产生不同的曲线。 下图显示了四个通过同一个点集的基数样条。 每个样条显示紧张关系。 请注意,0 的紧张与无限的物理紧张相对应,迫使曲线在点之间采用最短的方式(直线)。 1 的紧张与物理紧张相对应,使样条采用最小总弯曲的路径。 由于紧张值大于 1,曲线的行为类似于压缩的春天,被推送为采用更长的路径。

图显示了四个基线通过相同的三个点

请注意,上图中的四个样条在起点上共享相同的正切线。 切线是从起点到曲线的下一个点绘制的线。 同样,终点处的共享正切值是从终点绘制到曲线上上一点的线条。

若要绘制基数样条,需要一个 图形 对象、 对象以及 对象的数组。 Graphics 对象提供 DrawCurve 方法,该方法绘制样条,Pen 对象存储样条的属性,如线条宽度和颜色。 Point 对象的数组存储曲线将传递的点。 以下示例绘制一个通过 myPointArray 中点的基数样条。 第三个参数是紧张。

myGraphics.DrawCurve(&myPen, myPointArray, 3, 1.5f);