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

时间:2015-12-21 21:31:27

标签: math graphics geometry bezier

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

enter image description here

1 个答案:

答案 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)