public void MergePolygons() { MajorPartner.AbsorbPolygon(MajorPartner_qIndex, MinorPartner, MinorPartner_pIndex); MinorPartner.ReplaceEdgesWithPolygon(MajorPartner, this); MajorPartner.UpdateEdgeIndices(this); HasBeenMerged = true; }
public bool CanMergePolygons() { PointF a = MajorPartner.PrevPoint(MajorPartner_pIndex); PointF b = MajorPartner.Points[MajorPartner_pIndex]; PointF c = MinorPartner.NextPoint(MinorPartner_pIndex); if (Math.Cross(a, b, c) > 0f) { return(false); } PointF a2 = MajorPartner.NextPoint(MajorPartner_qIndex); PointF b2 = MajorPartner.Points[MajorPartner_qIndex]; PointF c2 = MinorPartner.PrevPoint(MinorPartner_qIndex); if (Math.Cross(a2, b2, c2) < 0f) { return(false); } return(true); }