Geometry 如何检测多边形是否具有自相交?

Geometry 如何检测多边形是否具有自相交?,geometry,computational-geometry,Geometry,Computational Geometry,假设您有一个二维多边形(更精确地说是二维多边形)。如何检查它是否包含自相交?它可以是凸的或凹的,方向为顺时针或逆时针 现在,我可以运行一个标准的O(nlogn)算法来检查是否有任何两段交叉。但我相信,因为我们有一些额外的结构——段的顺序以及每两个连续段在端点相遇的事实——可以设计出一种更简单、更快的算法(可能是O(N)?) 有什么想法吗?你需要检查一下自己的交叉点,还是找到所有的交叉点?后者比O(N logn)更难,因为可以有O(N^2)与N段相交 如果您只需要找出是否存在自相交,或找到少量自相

假设您有一个二维多边形(更精确地说是二维多边形)。如何检查它是否包含自相交?它可以是凸的或凹的,方向为顺时针或逆时针

现在,我可以运行一个标准的
O(nlogn)
算法来检查是否有任何两段交叉。但我相信,因为我们有一些额外的结构——段的顺序以及每两个连续段在端点相遇的事实——可以设计出一种更简单、更快的算法(可能是
O(N)
?)


有什么想法吗?

你需要检查一下自己的交叉点,还是找到所有的交叉点?后者比
O(N logn)
更难,因为可以有
O(N^2)
N
段相交

如果您只需要找出是否存在自相交,或找到少量自相交,请查看。这篇文章似乎正是你所需要的,特别是在多边形平面化部分。我怀疑实现这里描述的算法是否简单,或者对于任何规模合理的问题是否值得。但这种算法确实存在。免责声明:我没有试着看完这篇文章并理解它