public void TestSetOrientation() { var mesh = new BndFactory(2).CreateMesh() as BndMesh; var face = BuildCcwSquare(mesh); // ReSharper disable PossibleNullReferenceException mesh.FinalizeMesh(); var vertsCcw = face.Vertices().ToList(); var boundaryFace = mesh.Faces.First(f => f != face); Assert.IsTrue(boundaryFace.IsBoundary); Assert.IsFalse(face.IsBoundary); Assert.IsTrue(face.Vertices().Zip(vertsCcw, (v1, v2) => v1 == v2).All(f => f)); mesh.SetOrientation(true); Assert.IsTrue(face.Vertices().Zip(vertsCcw, (v1, v2) => v1 == v2).All(f => f)); mesh.SetOrientation(false); // We are reversed, but in flipping the first edge to point (0,0)->(0,1) so that it // points (0,1)->(0,0) the initial vertex of the face has been changed to (0,1) so // we have to shift to account for that. vertsCcw = vertsCcw.Skip(2).Concat(vertsCcw.Take(2)).ToList(); // ReSharper restore PossibleNullReferenceException Assert.IsTrue(face.Vertices().Reverse().Zip(vertsCcw, (v1, v2) => v1 == v2).All(f => f)); }
public void TestSetOrientationTwoBnds() { var mesh = new BndFactory(2).CreateMesh() as BndMesh; var faceCcw = BuildCcwSquare(mesh) as BoundaryFace; var faceCw = BuildCwSquare(mesh) as BoundaryFace; // ReSharper disable PossibleNullReferenceException mesh.FinalizeMesh(); var vertsCcw = faceCcw.Vertices().ToList(); var vertsCw = faceCw.Vertices().ToList(); Assert.IsFalse(faceCcw.IsBoundary); Assert.IsFalse(faceCw.IsBoundary); Assert.IsTrue(faceCcw.Vertices().Zip(vertsCcw, (v1, v2) => v1 == v2).All(f => f)); Assert.IsTrue(faceCw.Vertices().Zip(vertsCw, (v1, v2) => v1 == v2).All(f => f)); mesh.SetOrientation(true); Assert.IsTrue(faceCcw.Vertices().Zip(vertsCcw, (v1, v2) => v1 == v2).All(f => f)); vertsCw = vertsCw.Skip(2).Concat(vertsCw.Take(2)).ToList(); Assert.IsTrue(faceCw.Vertices().Reverse().Zip(vertsCw, (v1, v2) => v1 == v2).All(f => f)); }