InCircleDecimal() private static method

private static InCircleDecimal ( System.Point pa, System.Point pb, System.Point pc, System.Point pd ) : decimal
pa System.Point
pb System.Point
pc System.Point
pd System.Point
return decimal
Ejemplo n.º 1
0
        public static double InCircle(Point pa, Point pb, Point pc, Point pd)
        {
            Statistic.InCircleCount = Statistic.InCircleCount + (long)1;
            double num   = pa.x - pd.x;
            double num1  = pb.x - pd.x;
            double num2  = pc.x - pd.x;
            double num3  = pa.y - pd.y;
            double num4  = pb.y - pd.y;
            double num5  = pc.y - pd.y;
            double num6  = num1 * num5;
            double num7  = num2 * num4;
            double num8  = num * num + num3 * num3;
            double num9  = num2 * num3;
            double num10 = num * num5;
            double num11 = num1 * num1 + num4 * num4;
            double num12 = num * num4;
            double num13 = num1 * num3;
            double num14 = num2 * num2 + num5 * num5;
            double num15 = num8 * (num6 - num7) + num11 * (num9 - num10) + num14 * (num12 - num13);

            if (Behavior.NoExact)
            {
                return(num15);
            }
            double num16 = (Math.Abs(num6) + Math.Abs(num7)) * num8 + (Math.Abs(num9) + Math.Abs(num10)) * num11 + (Math.Abs(num12) + Math.Abs(num13)) * num14;
            double num17 = Primitives.iccerrboundA * num16;

            if (num15 > num17 || -num15 > num17)
            {
                return(num15);
            }
            return((double)((double)Primitives.InCircleDecimal(pa, pb, pc, pd)));
        }