public void SplitFace_And_CollapseEdge_Are_Inverse() { // Arrange var positions = new[] { new Vec3d(0, 0, 0), new Vec3d(1, 0, 0), new Vec3d(1, 1, 0), new Vec3d(0, 1, 0), }; var rand = new Random(); Mesh.Core.Mesh mesh = null; for (int i = 0; i < 4; i++) { mesh = Mesh.Core.Mesh.CreateSingleFace(positions); // Act var index = rand.Next(0, 4); mesh.SplitFace(0, index, (index + 2) % 4, out _); mesh.CollapseEdge(1, 2); // Assert Assert.AreEqual(1, mesh.FaceCount); Assert.AreEqual(4, mesh.VertexCount); Assert.AreEqual(8, mesh.HalfEdgeCount); } }
public void CollapseEdge_Should_Work_On_Simple_Quad() // How would a collapsed edge on a quad look like? { // Arrange var positions = new[] { new Vec3d(0, 0, 0), new Vec3d(1, 0, 0), new Vec3d(1, 1, 0), new Vec3d(0, 1, 0), }; var rand = new Random(); Mesh.Core.Mesh mesh = null; for (int i = 0; i < 4; i++) { mesh = Mesh.Core.Mesh.CreateSingleFace(positions); // Act var index = rand.Next(0, 4); mesh.CollapseEdge(0, index); // Assert Assert.AreEqual(1, mesh.FaceCount); Assert.AreEqual(3, mesh.VertexCount); Assert.AreEqual(6, mesh.HalfEdgeCount); } SimpleExporter.Export("D:\\Git\\PolygonMesh\\PolygonMesh.Library.Tests\\Resources\\test.obj", mesh); }