public ShearTriangle2D(double[] _B, double[] _C)
        {
            m_B = _B;
            m_C = _C;

            Alpha   = Simplex3D.Angle(m_A, m_B, m_C);
            Beta    = Simplex3D.Angle(m_B, m_A.Subtract(m_B), m_C.Subtract(m_B));
            Gamma   = Simplex3D.Angle(m_C, m_A.Subtract(m_C), m_B.Subtract(m_C));
            A       = Length(m_B, m_C);
            B       = Length(m_A, m_C);
            C       = Length(m_A, m_B);
            Surface = Math.PI - Alpha - Beta - Gamma;
        }
        public void TestAngleBetweenFacesI()
        {
            var randomSimplices = Simplex3D.RandomSamples(NUMBER_SAMPLES);

            foreach (var randomSimplex in randomSimplices)
            {
                var normalABC = randomSimplex.NormalOnFace("A", "B", "C");
                var normalABD = randomSimplex.NormalOnFace("A", "D", "B");
                var A         = randomSimplex.GetPoint("A");
                var angleA    = Math.PI - Simplex3D.Angle(A, normalABC, normalABD);

                var normalBCA = randomSimplex.NormalOnFace("B", "C", "A");
                var normalBAD = randomSimplex.NormalOnFace("B", "A", "D");
                var B         = randomSimplex.GetPoint("B");
                var angleB    = Math.PI - Simplex3D.Angle(B, normalBCA, normalBAD);

                if (Math.Abs(angleA - angleB) >= TOLERANCE)
                {
                    throw new Exception($"Deviation to high!");
                }
            }
        }