当 P1/P2 沿切线移动时,贝塞尔曲线的 B(t) 如何移动?

How does B(t) of a bezier curve move when P1/P2 move along tangent?

当P1从(0,4)变为(0,2)时,Q1(t=0.5)和Q2(t=0.6)分别移动0.75和0.576。当 P1 或 P2 分别沿 (Start--P1) 或 (P2--End) 移动时,如何计算任何 B(t) 移动的距离?

随便写贝塞尔曲线表达式:

B(t) = P0 * (1-t)^3 + P1 * 3 * t * (1-t)^2 + P2 * 3 * t^2 * (1-t) + P3 * t^3

设P1'为P1控制点的新位置。只有第二项会被改变,所以

DeltaB(t) = B'(t) - B(t) = (P1' - P1) * 3 * t * (1-t)^2

如果 P1' 位于 P0-P1,则

P1' = P0 + (P1 - P0) * u
DeltaB(t) =  (P0 + (P1 - P0) * u - P1) * 3 * t * (1-t)^2 = 
             (P0 - P1) * (1 - u) * 3 * t * (1-t)^2

对于您的示例数据

u = 0.5
(P0 - P1) * (1 - u) = (0, -2)   // (x,y) components of vector
DeltaB(0.5) = (0, -2 * 3 * 0.5 * 0.25) = (0, -0.75)
DeltaB(0.6) = (0, -2 * 3 * 0.6 * 0.4 * 0.4) = (0, -0.576)