问题描述
给出具有已知顶点坐标的凸多边形。每对顶点通过线段连接。有没有找到找到的线段相交的有效算法?
如何在此图片上有效地找到所有交点的坐标?
解决方法
内部相交的数量由n上限选择4,其中n是顶点的数量。不幸的是,对于处于一般位置的凸多边形,它们都将是不同的,因此一种有效的算法将是枚举4个组合(例如,使用this method)并计算从每个组合产生的一个交点(如果您将数字顶点按顺时针顺序排列,然后是从最低到第二高的线段与从第二低到第二高的线段的交点。
如果您对常规多边形特别感兴趣,可能可以做得更好。
,如果我是对的,那么在任何规则的多边形中,所有0-i
段都与所有j-k
段相交,其中0<j<i
和i<k<n-1
处有O(n³)
相交。然后,您可以将n
旋转2π/n
次,以获得所有解。
有重复的交点,但是我怀疑(没有证据)这不会改变渐近行为,蛮力可能是有效的。我不知道如何避免重复。