Пример #1
0
            public void method_5(VattiClipper2I.Class200 edge1, VattiClipper2I.Class200 edge2)
            {
                VattiClipper2I.Class197 resultPolygon1 = edge1.ResultPolygon;
                VattiClipper2I.Class197 resultPolygon2 = edge2.ResultPolygon;
                int num;

                for (num = Vector2I.CompareAngles(new Vector2I(edge1.Edge.Dx, edge1.Edge.Dy), new Vector2I(edge2.Edge.Dx, edge2.Edge.Dy)); num == 0 && (edge1.Previous != null && edge2.Previous != null); num = Vector2I.CompareAngles(new Vector2I(edge1.Edge.Dx, edge1.Edge.Dy), new Vector2I(edge2.Edge.Dx, edge2.Edge.Dy)))
                {
                    Point2I endPoint    = new Point2I(edge1.XBottom + edge1.Edge.Dx, edge1.Edge.YTop);
                    Point2I startPoint1 = new Point2I(edge1.XBottom, edge1.Edge.YTop - edge1.Edge.Dy);
                    VattiClipper2I.Class195.smethod_0(resultPolygon1, startPoint1, endPoint);
                    Point2I startPoint2 = new Point2I(edge2.XBottom, edge2.Edge.YTop - edge2.Edge.Dy);
                    VattiClipper2I.Class195.smethod_0(resultPolygon2, startPoint2, endPoint);
                    edge1 = edge1.Previous;
                    edge2 = edge2.Previous;
                }
                if (num < 0)
                {
                    for (LinkedListNode <Point2I> linkedListNode = resultPolygon1.Last; linkedListNode != null; linkedListNode = linkedListNode.Previous)
                    {
                        resultPolygon2.AddFirst(linkedListNode.Value);
                    }
                }
                else if (num >= 0)
                {
                    foreach (Point2I point2I in (LinkedList <Point2I>)resultPolygon1)
                    {
                        resultPolygon2.AddLast(point2I);
                    }
                }
                edge1.Previous.ResultPolygon = resultPolygon2;
            }
Пример #2
0
 private void method_0(
     VattiClipper2I.Class200 e,
     bool oddEqualTypeEdgeCount,
     bool oddUnequalTypeEdgeCount,
     ref VattiClipper2I.Class197 outputPolygon)
 {
     if (e.Edge.Side == (byte)0)
     {
         e.Edge.Side = oddEqualTypeEdgeCount ? (byte)1 : (byte)2;
         if (!oddUnequalTypeEdgeCount)
         {
             return;
         }
         if (outputPolygon == null)
         {
             outputPolygon = new VattiClipper2I.Class197();
             outputPolygon.AddFirst(new Point2I(e.Edge.XBottom, this.class191_0.Y));
             e.ResultPolygon = outputPolygon;
         }
         else
         {
             if (e.Edge.XBottom != outputPolygon.First.Value.X)
             {
                 outputPolygon.AddLast(new Point2I(e.Edge.XBottom, this.class191_0.Y));
             }
             e.ResultPolygon = outputPolygon;
             outputPolygon   = (VattiClipper2I.Class197)null;
         }
     }
     else
     {
         if (!oddUnequalTypeEdgeCount)
         {
             return;
         }
         int x = (int)System.Math.Round(e.Edge.method_1(this.class191_0.Y));
         if (outputPolygon == null)
         {
             outputPolygon = new VattiClipper2I.Class197();
             outputPolygon.AddFirst(new Point2I(x, this.class191_0.Y));
         }
         else
         {
             if (x != outputPolygon.First.Value.X)
             {
                 outputPolygon.AddLast(new Point2I(x, this.class191_0.Y));
             }
             outputPolygon = (VattiClipper2I.Class197)null;
         }
     }
 }