我在用一些贝塞尔曲线构建的 Javascript 中有一个贝塞尔曲线。我可以移动手柄,它们保持对称。我通过首先计算贝塞尔曲线上的手柄和点之间的距离来做到这一点。然后我比较两个手柄的距离,计算一个乘数并将其应用于未拖动的手柄。这适用于保持对称。
但我想实现未拖动手柄的长度保持不变。
http://cl.ly/image/0c1z00131m2y(一张小图解释我的意思)。
我目前用来计算运动的代码是这样的:
dx = Math.abs(drag.x - point.p[(draggedItemIndex)/2].x);
dy = Math.abs(drag.y - point.p[(draggedItemIndex)/2].y);
dx2 = Math.abs(point.cp[draggedItemIndex-1].x - point.p[draggedItemIndex/2].x);
dy2 = Math.abs(point.cp[draggedItemIndex-1].y - point.p[draggedItemIndex/2].y);
dxdx = dx2/dx;
dydy = dy2/dy;
point.cp[draggedItemIndex-1].x -= dragX*dxdx;
point.cp[draggedItemIndex-1].y -= dragY*dydy;
谢谢您的回答。