【发布时间】:2017-02-09 02:42:52
【问题描述】:
我正在尝试制作一个项目,用户可以在画布上绘制箭头,我需要一条曲线。
如您所知,一条二次曲线可以这样表示: M 65 100 Q 300、100、300、20
其中前两个数字(65, 100)代表起点坐标,后两个数字(300,20)代表终点坐标(箭头末端)。 我需要根据第一个点和第二个点计算中间两个数字,做出一条好看的曲线。
第一个点的坐标来自mousedown,第二个点的坐标来自mouseup。
现在我是这样使用的。
function addCurve(Ax, Ay, Bx, By){
canvas.add(new fabric.Path('M '+ Ax +' '+ Ay +' Q 100, 100, '+ Bx +', '+ By +'', { fill: '', stroke: 'red' }));
}
addCurve(100,0,200,0);
那么,如何计算中点坐标才能得到一条均匀的曲线呢? 我也在这个项目中使用了 fabric.js。
【问题讨论】:
-
如何仅从两点绘制曲线?
-
@RoryMcCrossan 我 100% 确定你可以,例如你可以用它们制作一个等腰三角形,并且三角形的高度是底边的一半。我知道怎么做,但我不能把它们放在一个公式中。
-
这就是我的意思;你需要第三点。如果您使用等腰线来创建它,那么足够公平
-
计算连接两个端点的线段的中点。为您提供“均匀”曲线的二次曲线控制点将垂直于该中点处的线段。你在垂直线上走得越远,你得到的曲线就越多。您的设计要求决定了可接受的“曲线”。
标签: javascript jquery html5-canvas fabricjs