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 }