Ejemplo n.º 1
0
 public void MergePolygons()
 {
     MajorPartner.AbsorbPolygon(MajorPartner_qIndex, MinorPartner, MinorPartner_pIndex);
     MinorPartner.ReplaceEdgesWithPolygon(MajorPartner, this);
     MajorPartner.UpdateEdgeIndices(this);
     HasBeenMerged = true;
 }
Ejemplo n.º 2
0
        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);
        }