public void Center_OfASquareFace_ShouldBeCorrect()
        {
            // Fixture setup
            var fakeFace = new Face(new[]
            {
                VertexUtilities.NewVertex(1, 1, 1),
                VertexUtilities.NewVertex(1, -1, 1),
                VertexUtilities.NewVertex(-1, -1, 1),
                VertexUtilities.NewVertex(-1, 1, 1)
            });

            var expected = new Vector(new[] { 0, 0, Math.Sqrt(3) });

            // Exercise system
            var actual = fakeFace.SphericalCenter();

            // Verify outcome
            TestUtilities.WriteExpectedAndActual(expected, actual);
            Assert.Equal(expected, actual);

            // Teardown
        }
예제 #2
0
        public void Faces_GivenAClockwiseSetOfVertices_SortsVerticesInEachFaceInAnticlockwiseOrder()
        {
            // Fixture setup
            var clockwiseVertices = new List <Vertex>
            {
                VertexUtilities.NewVertex(0, 0),
                VertexUtilities.NewVertex(Math.PI / 2, Math.PI / 2),
                VertexUtilities.NewVertex(Math.PI / 2, 0)
            };

            // Exercise system
            var face     = new Face(clockwiseVertices);
            var vertices = face.Vertices;
            var center   = face.SphericalCenter();

            // Verify outcome
            var vectors       = vertices.Select(vertex => vertex.Position).ToList();
            var viewDirection = -center;

            Assert.True(TestUtilities.AreInAntiClockwiseOrder(vectors, center, viewDirection));

            // Teardown
        }