我正在研究一个可以绘制节点和边缘图的系统。我正在使用Java画布,所以我可以让用户在程序上自由手绘他们想要的一切。有没有一个算法,可以检查我从中得到的点的数组列表,检查线是否更接近圆或线?目前我只是检查是否有任何点(除了它自己)等于同一点来分类一个圆圈。我确信有更好的方法来检测圆圈。有任何想法吗?
提前谢谢。答案 0 :(得分:4)
一般提示 - 使用矢量和角度进行分类,而不是单个点。这是许多交互式文本识别系统所基于的技术。
在您的情况下,概率较高的封闭数字是圆圈。
因此,如果您可以跟踪用户的连续绘图移动,只需将每个绘图向量移动到堆栈。
之后,您只需要计算堆栈中矢量之间的角度总和(注意,角度符号取决于pseudoscalar product的符号)。如果总和接近pi
- 这意味着,该数字是一个圆圈,否则为 - 行
P.S。提示跟踪连续绘图移动 - 只需计算连续拖动和点击之间的延迟