当P1从(0,4)变为(0,2)时,Q1(t = 0.5)和Q2(t = 0.6)分别移动0.75和0.576。当P1或P2分别沿(开始 - P1)或(P2 - 结束)移动时,如何计算任何B(t)移动距离?
答案 0 :(得分:0)
只需编写贝塞尔曲线表达式:
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)