如何通过用鼠标移动一个点来改变贝塞尔曲线?
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 之间的常数。
例如在 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 之间的常数。