张力与三次样条插值有何关系?我指的是这篇文章的三次样条插值。张力系数 t=0 用于第一个结点,t=1 用于最后一个结点。但是我们可以在哪里替代三次样条中的其他张力值,例如 0.1、0.2 等?任何人都可以指导我找到任何有用的参考资料吗?
3 回答
三次样条没有张力值,我们计算一阶导数和二阶导数以确保连续性。贝塞尔曲线(和张力样条)具有张力值,张力决定“曲线弯曲的程度”。Photoshop 上的平面设计师在使用贝塞尔工具时已经开始紧张了
最好的起点是维基百科的样条曲线,并通过笔和纸进行一些计算(机械地阅读它对理解没有多大帮助)。从三次样条开始,因为它们通常被介绍给三年级数学学生。
这个关于“ Hermite Splines”的页面声称“ Hermite 曲线的数学背景将帮助您了解整个样条系列”。
您指向的链接使用贝塞尔样条曲线。贝塞尔样条是多项式样条的一种特殊形式。贝塞尔样条曲线很可能是三次阶的,但不是使用张力“定义”的。三次贝塞尔曲线由四个点 p1、p2、p3、p4 定义。
- p1 = 曲线的起点
- p2 = 从 p1(导数)开始时曲线“走向”的方向
- p3 = 曲线到达 p4 的方向(导数)*
- p4 = 曲线的端点
通常,曲线永远不会经过 p2 和 p3。
说样条曲线是三次的,基本上意味着它近似于三次多项式,即。f(x) = ax^3 + bx^2 + cx + d
其中d iz 非零。
三次贝塞尔样条曲线只是定义曲线行为方式的一种方式。张力样条也可以是三次的,但用张力而不是导数来定义。
如果您提供一些背景来说明您为什么不使用该代码,您想了解多少数学以及您的背景是什么,我可能会为您指出一些阅读内容。
三次样条曲线通过您传递给它的一组 X 和 Y 值拟合曲线。这些值必须定义一个函数,这意味着每个 x 值必须高于前一个。用一些代码的另一种说法是:X[i+1] > X[i],必须为真。否则曲线会自行折叠,这在严格的数学意义上不是一个有效的函数。通过三次样条拟合数据,您现在可以请求第一个和最后一个 X 值之间的任何值。如果您不要求在您传入的 X 值处不正确的值,它将插入答案。结果将是平滑且连续的,具有连续的一阶导数。如果您没有任何微积分,您可以查阅在线参考以了解一阶导数的定义,但老实说,如果您只是想找到三次样条或张力样条,
这是三次样条和张力样条之间的区别。三次样条可以返回在您传入的点之间上下摆动的结果(它将始终通过您传入的数据)。可以说,那些摆动是没有必要的。我们真的不知道数据点之间发生了什么,它很可能会摆动,只是不知道。在这种情况下,我们通常不希望在曲线上添加额外的形状。张力样条曲线将抑制数据点之间的上下摆动。让我明确一点,正常的三次样条曲线通常也不会上下摆动,只有当数据有非常急剧的变化时( Y[i+1] >> Y[i] ),才有可能摆动将在点 (i) 和点 (i+1) 之间产生。