【发布时间】:2012-07-14 16:13:05
【问题描述】:
我需要一种机制来检测具有不同笔划宽度的直线、曲线和折线的鼠标悬停事件,我已经为矩形和椭圆建立了这种机制,所以我对 canvas API 并不陌生。我会勾勒出所有绘制对象的轮廓并检测鼠标在它们上方的位置,当矩形或椭圆的笔画宽度超过 1 像素时,我会扩展路径以使其也包含边框。例如,对于线条和折线,当我的 lineWidth 为 20 像素时,我很难理解应该如何扩展它们。
我的问题是:如何在一些形状路径中转换直线、曲线和多段线,以便这条路径可以包含它们的所有宽度?
我需要创建的路径包含此图像中用黑色表示的线/曲线宽度。
---------更多信息----------
我会尽量简化问题: 我们有 2 个点(在下图中用红色表示),它们形成一条具有特定公式(y = mx + n)的线,我需要确定穿过这两个初始点的垂直线的公式,之后,有必要确定“蓝色”点的位置,它们位于 context.lineWidth 值一半的距离处,当所有点都已确定时,可以使用 moveTo() 和lineTo() 序列。这种方法应该适用于使用控制点的二次曲线和贝塞尔曲线。问题只存在于这些数学计算中。
【问题讨论】:
-
您可以尝试在数学 SE 上寻求帮助。
-
好的,我也去那里找个答案:)
-
那么你想要一种在简化版中找到垂直线公式的方法吗?
-
不,我需要得到蓝点的坐标,我只是解释了如何在逻辑上确定它们,现在我需要知道如何在数学上确定它们
-
相关帖子stackoverflow.com/a/8462037/380384。如何偏移多边形。
标签: javascript html html5-canvas