TriangleNet.Primitives.InCircleDecimal C# (CSharp) Method

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
        private static decimal InCircleDecimal(Point pa, Point pb, Point pc, Point pd)
        {
            Statistic.InCircleCountDecimal++;

            decimal adx, bdx, cdx, ady, bdy, cdy;
            decimal bdxcdy, cdxbdy, cdxady, adxcdy, adxbdy, bdxady;
            decimal alift, blift, clift;

            adx = (decimal)pa.x - (decimal)pd.x;
            bdx = (decimal)pb.x - (decimal)pd.x;
            cdx = (decimal)pc.x - (decimal)pd.x;
            ady = (decimal)pa.y - (decimal)pd.y;
            bdy = (decimal)pb.y - (decimal)pd.y;
            cdy = (decimal)pc.y - (decimal)pd.y;

            bdxcdy = bdx * cdy;
            cdxbdy = cdx * bdy;
            alift = adx * adx + ady * ady;

            cdxady = cdx * ady;
            adxcdy = adx * cdy;
            blift = bdx * bdx + bdy * bdy;

            adxbdy = adx * bdy;
            bdxady = bdx * ady;
            clift = cdx * cdx + cdy * cdy;

            return alift * (bdxcdy - cdxbdy)
                + blift * (cdxady - adxcdy)
                + clift * (adxbdy - bdxady);
        }

Usage Example

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)));
        }