Qua*_*ndo 4 math geometry bezier
当三次贝塞尔曲线的两个控制点都位于曲线两个端点之间的线上时,生成的曲线将是直线。在我的情况下,问题是我得到的不同 t 曲线上点的实际间距根据控制点在该线上的位置而有所不同。
如果我使用 p1 和 p2 之间的 lerp 计算两个控制点的位置,如下所示:
controlPoint1 = endPoint1.lerp(endPoint2,a);
controlPoint2 = endPoint1.lerp(endPoint2,b);
Run Code Online (Sandbox Code Playgroud)
必须有 a,b 的一种配置,其中间距实际上是等距的。我尝试了 0.25/0.75、0.3333/0.6666、0.5/0.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,
Run Code Online (Sandbox Code Playgroud)
为所有值给出 j=t。