Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何找到建立在多边形顶点上的所有线段的交点?_Algorithm_Computational Geometry_Intersection_Line Segment - Fatal编程技术网

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)只要与有效交叉口数相对应,算法就不是问题。