【发布时间】:2022-11-21 04:29:17
【问题描述】:
我有一个点列表 (x1, y1), ... (xn, yn)。这些点是非凸单多边形的顶点。目标是找到多边形中的所有有效对角线(完全位于多边形内部)。
我的解决方案是检查每条对角线与多边形边的交点。如果对角线与边相交,则表示它不是有效对角线。但是如果对角线完全在多边形之外怎么办?它与多边形的边没有交点。这种情况可以用交叉乘法解决吗?我在 cpp 中使用 long double 所以我想要最准确的解决方案。 Example of polygon
【问题讨论】:
-
我想你可以检查一下方向是否在外面。 (那么里面就不能完整)
-
我怎样才能检查它?由于准确性,我不想使用三角函数。
-
哦!我可以通过交叉乘法来检查它。感谢提示
-
我意识到如果对角线的开头有钝角,我们就会遇到问题,所以交叉乘法不起作用
-
如果它是非自相交多边形,那么有一个特定的内部方向,当您遍历节点时,左侧/右侧始终是内侧。
标签: c++ geometry polygon triangulation non-convex