Example #1
0
 private static void CalculateResultChain(List <FP> poly1Coeff, List <YuPengClipper.Edge> poly1Simplicies, List <FP> poly2Coeff, List <YuPengClipper.Edge> poly2Simplicies, PolyClipType clipType, out List <YuPengClipper.Edge> resultSimplices)
 {
     resultSimplices = new List <YuPengClipper.Edge>();
     for (int i = 0; i < poly1Simplicies.Count; i++)
     {
         FP   x    = 0;
         bool flag = poly2Simplicies.Contains(poly1Simplicies[i]);
         if (flag)
         {
             x = 1f;
         }
         else
         {
             bool flag2 = poly2Simplicies.Contains(-poly1Simplicies[i]) && clipType == PolyClipType.Union;
             if (flag2)
             {
                 x = 1f;
             }
             else
             {
                 for (int j = 0; j < poly2Simplicies.Count; j++)
                 {
                     bool flag3 = !poly2Simplicies.Contains(-poly1Simplicies[i]);
                     if (flag3)
                     {
                         x += YuPengClipper.CalculateBeta(poly1Simplicies[i].GetCenter(), poly2Simplicies[j], poly2Coeff[j]);
                     }
                 }
             }
         }
         bool flag4 = clipType == PolyClipType.Intersect;
         if (flag4)
         {
             bool flag5 = x == 1f;
             if (flag5)
             {
                 resultSimplices.Add(poly1Simplicies[i]);
             }
         }
         else
         {
             bool flag6 = x == 0f;
             if (flag6)
             {
                 resultSimplices.Add(poly1Simplicies[i]);
             }
         }
     }
     for (int k = 0; k < poly2Simplicies.Count; k++)
     {
         FP   x2    = 0f;
         bool flag7 = !resultSimplices.Contains(poly2Simplicies[k]) && !resultSimplices.Contains(-poly2Simplicies[k]);
         if (flag7)
         {
             bool flag8 = poly1Simplicies.Contains(-poly2Simplicies[k]) && clipType == PolyClipType.Union;
             if (flag8)
             {
                 x2 = 1f;
             }
             else
             {
                 x2 = 0f;
                 for (int l = 0; l < poly1Simplicies.Count; l++)
                 {
                     bool flag9 = !poly1Simplicies.Contains(poly2Simplicies[k]) && !poly1Simplicies.Contains(-poly2Simplicies[k]);
                     if (flag9)
                     {
                         x2 += YuPengClipper.CalculateBeta(poly2Simplicies[k].GetCenter(), poly1Simplicies[l], poly1Coeff[l]);
                     }
                 }
                 bool flag10 = clipType == PolyClipType.Intersect || clipType == PolyClipType.Difference;
                 if (flag10)
                 {
                     bool flag11 = x2 == 1f;
                     if (flag11)
                     {
                         resultSimplices.Add(-poly2Simplicies[k]);
                     }
                 }
                 else
                 {
                     bool flag12 = x2 == 0f;
                     if (flag12)
                     {
                         resultSimplices.Add(poly2Simplicies[k]);
                     }
                 }
             }
         }
     }
 }