Algorithm 如何找到建立在多边形顶点上的所有线段的交点?
已知顶点坐标的给定凸多边形。每对顶点由一条线段连接。是否有有效的算法来查找结果线段的交点 例如,使用规则的十二边形,所有线段构成此图片:Algorithm 如何找到建立在多边形顶点上的所有线段的交点?,algorithm,computational-geometry,intersection,line-segment,Algorithm,Computational Geometry,Intersection,Line Segment,已知顶点坐标的给定凸多边形。每对顶点由一条线段连接。是否有有效的算法来查找结果线段的交点 例如,使用规则的十二边形,所有线段构成此图片: 如何有效地找到这张图片上所有交点的坐标?内部交点的数量上限为n选择4,其中n是顶点的数量。不幸的是,对于一般位置的凸多边形,它们都是不同的,因此一个有效的算法是枚举4个组合(例如,使用),并计算每个组合产生的一个交点(如果按顺时针顺序对顶点编号,则表示从最低到第二高的线段与从第二低到最高的线段的交点) 如果你对正多边形特别感兴趣,可能会做得更好。如果我是对的
如何有效地找到这张图片上所有交点的坐标?内部交点的数量上限为n选择4,其中n是顶点的数量。不幸的是,对于一般位置的凸多边形,它们都是不同的,因此一个有效的算法是枚举4个组合(例如,使用),并计算每个组合产生的一个交点(如果按顺时针顺序对顶点编号,则表示从最低到第二高的线段与从第二低到最高的线段的交点)
如果你对正多边形特别感兴趣,可能会做得更好。如果我是对的,在任何正多边形中,所有
0-I
段都与所有j-k
段相交,其中0对正多边形的算法优化有什么想法吗?@AlexanderAnishin给出了一个交点数的公式,但是re有趣地引用了一个事实,即除中心外,最多有7条线会在中心相交。不幸的是,这意味着您必须使用θ(n^4)算法,因此尝试详细分析重合交点可能没有意义。@Davidisenstat:“卡住”与Θ(n^4)只要与有效交叉口数相对应,算法就不是问题。