我的问题是找出3D空间中的通用(凸面或凹面)多边形和矩形多边形是否具有非空交点。每个多边形由一组纵坐标轮廓点定义(如果点p1在点p2之后/之前,则边缘p1-p2存在)。
很容易找到多边形的两个平面的交点线,因此问题是找到一条直线和有限多边形的交点,以及如果得到的交点有一个共同的部分。我找到了一条线和一个凸多边形交叉的算法,但是对于凹多边形的一般情况我找不到任何东西。
有什么建议吗? 谢谢
答案 0 :(得分:1)
找到两个数字的每个边的平面交点线的交点点。从那里可以直观地看到线上点的排序,以检查是否存在任何重叠。
当然,他们共面的特殊情况是另一个问题。
答案 1 :(得分:0)
凹面多边形交叉/包含/等查询通常没有快速解决方案。
一般解决方案始终是triangulate the polygon到一系列凸三角形,然后用这些三角形运行交叉测试。
答案 2 :(得分:0)
如果您可以依赖多边形为平面,则可以先将直线与平面相交,然后将交点转换为平面的坐标系。
假设您还转换了多边形的所有顶点,现在的问题是确定2D交叉点是否在2D多边形内。