如何通过用鼠标移动一个点来改变贝塞尔曲线?

How to change a Bezier curve by moving a point on it with the mouse?

例如在 Illustrator 中。即鼠标抓取曲线,移动鼠标一定距离

这是一个类似的话题: Drag a bezier curve to edit it

我试图重现 tfinniga 的回答:

P1 = P1 + k1 * V;
P2 = P2 + k2 * V;

P0 和 P3 必须保留在原位。

即使K加1,结果也不符合预期

image, point shifted 100 up

您误解了 tfinniga 的 post 的答案。

tfinniga的post,我们有

P = k0*P0 + k1*P1 + k2*P2 + k3*P3 and 
P' = k0*P0' + k1*P1' + k2*P2' + k3*P3'

由于您要求 P0 和 P3 不变,因此我们有 V 的两个恒等式

V = k1*(P1'-P1) + k2*(P2'-P2)

V = P' - P0

所以,你可以选择

  P1' = P1 + c/k1 * V, 
  P2' = P2 + (1-c)/k2 * V

其中 c 是一个介于 0 和 1 之间的常数。