/// <summary> /// 主多边形上找到一个顶点,不在diff多边形内的。 /// </summary> /// <param name="mainPoly"></param> /// <param name="diffpoly"></param> /// <param name="poly"></param> /// <param name="curedge"></param> public static bool FindOutDiffPointPoint(Polygon2D mainPoly, Polygon2D diffpoly, ref Double2 curPoint, ref int curedge) { if (mainPoly == null || diffpoly == null || mainPoly.GetEdgeNum() < 3 || diffpoly.GetEdgeNum() < 3) { return(false); } for (int i = 0; i < mainPoly.GetEdgeNum(); i++) { Double2 point = mainPoly.GetPoint(i); if (diffpoly.CheckIn(point) == false) { curPoint = point; curedge = i; return(true); } } return(false); }
/// <summary> /// 与多边形的关系 /// </summary> /// <param name="ab"></param> /// <returns>true 相交: false 不相交</returns> public override bool CheckIntersect(Polygon2D ab) { if (ab == null) { return(false); } if (ab.CheckIn(this.circleCenter) == true) { return(true); } for (int i = 0; i < ab.GetEdgeNum(); i++) { LineSegment2D ls = ab.GetEdge(i); if (this.CheckLineRelation(ls) != LineRelation.Detach) { return(true); } } return(false); }