Esempio n. 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;
            }
Esempio n. 2
0
                public int Compare(VattiClipper2I.Class200 a, VattiClipper2I.Class200 b)
                {
                    double num1 = a.Edge.method_1(this.int_0);
                    double num2 = b.Edge.method_1(this.int_0);

                    if (num1 < num2)
                    {
                        return(-1);
                    }
                    if (num1 > num2)
                    {
                        return(1);
                    }
                    return(Vector2I.CompareAngles(new Vector2I(a.Edge.Dx, a.Edge.Dy), new Vector2I(b.Edge.Dx, b.Edge.Dy)));
                }
Esempio n. 3
0
 private static void smethod_1(
     Point2I p,
     List <VattiClipper2I.Class191> localMinimumList,
     VattiClipper2I.Class199 e0,
     VattiClipper2I.Class199 e1)
 {
     VattiClipper2I.Class191 class191 = new VattiClipper2I.Class191()
     {
         Y = p.Y
     };
     localMinimumList.Add(class191);
     VattiClipper2I.Class199 class199_1;
     VattiClipper2I.Class199 class199_2;
     if (Vector2I.CompareAngles(new Vector2I(e0.Dx, e0.Dy), new Vector2I(e1.Dx, e1.Dy)) <= 0)
     {
         class199_1 = e1;
         class199_2 = e0;
     }
     else
     {
         class199_1 = e0;
         class199_2 = e1;
     }
     if (class199_1.Dy == 0)
     {
         class191.Left        = class199_1.Successor;
         class199_1.Successor = class199_2;
         class199_1.method_3();
         class191.Right = class199_1;
     }
     else
     {
         class191.Left  = class199_1;
         class191.Right = class199_2;
     }
     e1.XBottom = p.X;
 }