Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Performance 直线与凹多边形的交点3D_Performance_Algorithm_Computational Geometry - Fatal编程技术网

Performance 直线与凹多边形的交点3D

Performance 直线与凹多边形的交点3D,performance,algorithm,computational-geometry,Performance,Algorithm,Computational Geometry,我的问题是要找出一个通用(凸或凹)多边形和一个三维空间中的矩形多边形是否有一个非空交点。每个多边形由一组坐标轮廓点定义(如果点p1位于点p2之后/之前,则存在边p1-p2) 很容易找到多边形的两个平面的交线,所以问题是找到一条线和有限多边形的交线,以及由此产生的交线是否有共同部分。我找到了直线和凸多边形相交的算法,但对于凹多边形的一般情况,我找不到任何算法 有什么建议吗? 谢谢凹多边形相交/包容/etc查询通常没有快速解决方案 通常的解决方案是将多边形划分为一系列凸三角形,然后对这些三角形进行相

我的问题是要找出一个通用(凸或凹)多边形和一个三维空间中的矩形多边形是否有一个非空交点。每个多边形由一组坐标轮廓点定义(如果点p1位于点p2之后/之前,则存在边p1-p2)

很容易找到多边形的两个平面的交线,所以问题是找到一条线和有限多边形的交线,以及由此产生的交线是否有共同部分。我找到了直线和凸多边形相交的算法,但对于凹多边形的一般情况,我找不到任何算法

有什么建议吗?
谢谢

凹多边形相交/包容/etc查询通常没有快速解决方案


通常的解决方案是将多边形划分为一系列凸三角形,然后对这些三角形进行相交测试。

如果可以将多边形视为平面,则可以先将直线与平面相交,然后将交点转换为平面的坐标系

假设还变换了多边形的所有顶点,现在的问题是确定二维交点是否在二维多边形内。

找到平面交点与两个图形的每条边的交点。从这里可以直接看到直线上点的顺序,以检查是否有重叠

当然,它们共面的特殊情况是另一个问题