我正在尝试根据用户在画布上绘制的内容编写一些点/线检测软件(我一直在通过 web 和 html 5 画布进行这一切)。当用户执行 MouseDown 事件时,我们创建一个数组来保存他/她绘图的所有点。之后的每个 MouseMove 事件都会将一个点 (x, y) 推送到数组上。MouseUp 事件表示用户绘图的结束。我想要对这些点做的是确定用户明显改变方向的位置。举个例子:
上述方法产生了以下有序的点集:
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 4), (7, 3), (8, 2)]
因此,基于这些点,我可以告诉用户在点 (5, 5) 向前明显改变了方向。程序的结果会给我三个点 [(1, 1), (5, 5), (8, 2)] 因为我将使用序列的第一个点,尝试找到一个明显的方向变化并得到该点,并使用序列中的最后一个点。
由于点的数量以及它们完全在一条直线上,因此上面的示例非常简化。当用户实际在画布上绘图时,线条不会完全笔直。出于我的目的,您可以假设用户正在绘制直线而不是明显弯曲的线。
那么根据上述信息,您建议我使用哪些算法、方法等?
编辑:错字