CatmulRoom
js
function clacCatmulRoom(t: number, p0: number, p1: number, p2: number, p3: number) {
return 0.5 *
(
(2 * p1) +
(p2 - p0) * t +
(2 * p0 - 5 * p1 + 4 * p2 - p3) * t * t +
(3 * p1 - p0 - 3 * p2 + p3) * t * t * t
);
}
遇到的问题,在一条长直线之后,拐弯的地方很不自然


黑色的是用户输入点,红绿点是细分后的点,感觉应该是这个曲线函数的一个缺陷。

-
three.js CatmullRomCurve3中可以调整张力,有时间可以研究下他的实现方式。
hermite 埃尔米特曲线


这个曲线也有缺点,点1点2前后的点,如果距离非常远,就会导致点1和点2之间的驼峰

这个主要是控制点v0、v1
没有控制好,但是这个v0、v1
我是根据前后点距离,乘以前后线段法向量的角平分线的垂线,如果点的距离非常均匀,这种曲线绘制出来的就发出优美。
