4

当三次贝塞尔曲线的两个控制点都位于曲线的两个端点之间的直线上时,生成的曲线将是直线。在我的情况下,问题是我获得的不同 t 曲线上点的实际间距根据控制点在该线上的位置而变化。

如果我使用 p1 和 p2 之间的 lerp 计算两个控制点的位置,如下所示:

controlPoint1 = endPoint1.lerp(endPoint2,a);
controlPoint2 = endPoint1.lerp(endPoint2,b);

必须有一种 a,b 配置,其中间距实际上是等距的。我尝试了 0.25/0.75、0.3333/0.6666、0.5/0.5,但这些似乎都没有。

4

1 回答 1

5

我相信 [0, 1/3, 2/3, 1] =[a, b, c, d] 是正确的答案。

至少对于这些值,递归二等分

e = a*(1-t)+b*t, f=b*(1-t)+c*t, g=c*(1-t)+d*t,  
h = e*(1-t)+f*t, i=f*(1-t)+g*t,  
j = h*(1-t)+i*t,  

对所有值给出 j=t。

于 2012-11-13T18:47:00.007 回答