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