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