|
|
1
4
你在找一个像 Catmull Rom spline . 事实是,数学不是 all that hard to deal with (一些向量矩阵乘法)。我的建议是,您只需在代码中实现真正需要的样条曲线。
不过,您应该注意,如果Catmull Rom样条曲线在需要急转弯时靠得太近,它们可能会在控制点处导致小循环。 看上图,想象p1和p3紧挨着,在p2下方(基本上压缩图片的右侧)。Catmull Rom样条曲线很可能从p0向下,像现在一样通过p1,沿着p2的右侧,从右到左穿过p2,从左手侧向下,从左到右穿过p3。 这是样条曲线构造的结果。
|
|
|
2
3
对于任何一个在曲线背后挣扎数学的人来说,你可能会发现 this 允许 T 从0.0循环到1.0。 对于中的每对点 灰色 绿色 . 对于中的每对点 绿色 设置,计算一个点,它们之间的一小部分(使用t)。这一点如图所示 黑色 . T 第二幅图像显示了重复的相同过程,其中包含一个额外的点和一个额外的插值级别。 我发现这比我找到的任何其他选项都更容易理解、实现和扩展到三维。 approximating a curve using linear interpolation http://bimixual.org/AnimationLibrary/Bezier_2_big.gif approximating a curve using linear interpolation http://bimixual.org/AnimationLibrary/Bezier_3_big.gif |
|
|
3
3
http://www.mvps.org/directx/articles/catmull/ ,但幸运的是,您不需要了解它是如何工作的。请记住,与线性插值不同,线性插值只需要两个点,Catmull Rom样条曲线插值在两端使用一个额外的点。所以如果你想要一条穿过10个点的样条曲线,你需要12个。
该程序输出:
|
|
|
4
1
据我所知,没有内置的库。 Source |