Exemplo n.º 1
0
        public static ScalarField <Face> XDependentScalarField(IPolyhedron polyhedron, double average, double deviation)
        {
            var normals = FaceIndexedTableFactory.Normals(polyhedron);
            var values  = polyhedron.Faces.Select(face => average + deviation * normals[polyhedron.IndexOf(face)][0]).ToArray();

            return(new ScalarField <Face>(polyhedron.IndexOf, values));
        }
        public void Normals_OnACube_ShouldCalculateTheCorrectNormals
            (IPolyhedron polyhedron)
        {
            // Fixture setup
            var expected = new List <Vector>
            {
                VectorUtilities.NewVector(1, 0, 0),
                VectorUtilities.NewVector(-1, 0, 0),
                VectorUtilities.NewVector(0, 1, 0),
                VectorUtilities.NewVector(0, -1, 0),
                VectorUtilities.NewVector(0, 0, 1),
                VectorUtilities.NewVector(0, 0, -1)
            };

            // Exercise system
            var actual = FaceIndexedTableFactory.Normals(polyhedron);

            // Verify outcome
            TestUtilities.WriteExpectedAndActual(expected, actual);
            Assert.True(TestUtilities.UnorderedEquals(expected, actual, TestUtilities.RelativeAccuracy));

            // Teardown
        }