如何找到给定对角线(连接多边形以外的多边形的两个顶点的线段)是否为给定多边形的有效对角线?我正在用LEDA编写代码。 LEDA中是否有用于验证对角线的特定功能。需要帮忙。
答案 0 :(得分:0)
您可以调用多边形的intersection
方法,该方法将返回带有线段的交点。如果存在除两个端点之外的其他交叉点(即多于2个交叉点),则它无效。这是函数声明:
list<POINT> Polygon.intersection(const SEGMENT& s)
更新:正如j_random_hacker指出,如果对角线在多边形之外,这可能会失败。对于弱简单多边形,可以通过检查该段的内点是否位于多边形之外来避免这种情况。
bool Polygon.outside(const POINT& p)
然而,对于像自相交的复杂多边形,这仍然可能失败。根据有效对角线的不同,如果存在连接孔的边界和多边形的外边界的重合边,则对于弱简单多边形甚至可能失败。