public void AnglesSumOfTriangle2d() { double actual = NSpaces.NSphereSurfaceArea(2, 1) / 2; var rand = new Random(); var vertexes = new List <Vector <double> >() { new DenseVector(new[] { rand.NextDouble(), rand.NextDouble() }), new DenseVector(new[] { rand.NextDouble(), rand.NextDouble() }), new DenseVector(new[] { rand.NextDouble(), rand.NextDouble() }), }; var angle1Vectors = new List <Vector <double> >() { vertexes[1] - vertexes[0], vertexes[2] - vertexes[0], }; var angle2Vectors = new List <Vector <double> >() { vertexes[0] - vertexes[1], vertexes[2] - vertexes[1], }; var angle3Vectors = new List <Vector <double> >() { vertexes[0] - vertexes[2], vertexes[1] - vertexes[2], }; double real = Math.Abs(NSpaces.SolidAngle(angle1Vectors)) + Math.Abs(NSpaces.SolidAngle(angle2Vectors)) + Math.Abs(NSpaces.SolidAngle(angle3Vectors)); Assert.IsTrue(Math.Abs(actual - real) <= Epsilon); }
public void RightAngleDiv2Test2d() { double actual = NSpaces.NSphereSurfaceAreaOrtVectors(2) / 2; var vectors = new List <Vector <double> >() { new DenseVector(new[] { 1.0, 0.0 }), new DenseVector(new[] { 1.0, 1.0 }), }; double real = NSpaces.SolidAngle(vectors); Assert.IsTrue(Math.Abs(actual - real) <= Epsilon); }