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

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

你想继续问这个问题,尽管他们可能会告诉你拿一些纸,用符号表示的坐标画出曲线,然后简单地写出De Casteljau线性插值的结果,其中一个坐标的差值。当你这样做时,还要确保给其他三个点实际坐标。不是不重要。最后,介绍了一些。对不起,我忘了一些东西。。。在图像中,P2是(3,4)。当P2例如为(2,4)且将P1移动到(0,2)时,Q1(t=0.5)仍然移动0.75。这就是为什么我认为有一种比简单地为P1插入一个新值更简单、更快的计算方法。每个曲线的比率似乎都相同。至少现在我认为,当t=0.5,移动P1或p21单位时,(开始--P1)或(P2--End)Q1将单位/2.666移向同一方向。。。但是我现在正在读迈克的文章…
Q1移动单位/2.66
-是的,看看我的第二个公式:deltaQ1=deltaP1*3/8(对于t=0.5)确实非常有用。我知道这不难,但我总是看不见那些简单的事情。非常感谢。