Exemple #1
0
        public static void BasicTests()
        {
            foreach (var g in AllGeometries)
            {
                ValidateGeometry(g);
                ValidateGeometry(g.ToTriMesh());
            }

            Assert.AreEqual(3, XYTriangle.PointsPerFace);
            Assert.AreEqual(1, XYTriangle.FaceCount());
            Assert.AreEqual(3, XYTriangle.Vertices.Count);
            Assert.AreEqual(3, XYTriangle.Indices.Count);
            Assert.AreEqual(1, XYTriangle.Triangles().Count);
            Assert.AreEqual(0.5, XYTriangle.Area(), SmallTolerance);
            Assert.IsTrue(XYTriangle.Planar());
            Assert.AreEqual(new[] { 3 }, XYTriangle.FaceSizes.ToArray());
            Assert.AreEqual(new[] { 0 }, XYTriangle.FaceIndices.ToArray());
            Assert.AreEqual(new[] { 0, 1, 2 }, XYTriangle.Indices.ToArray());

            Assert.AreEqual(4, XYQuad.PointsPerFace);
            Assert.AreEqual(1, XYQuad.FaceCount());
            Assert.AreEqual(4, XYQuad.Vertices.Count);
            Assert.AreEqual(4, XYQuad.Indices.Count);
            Assert.AreEqual(2, XYQuad.Triangles().Count);
            Assert.AreEqual(1, XYQuad.Area(), SmallTolerance);
            Assert.IsTrue(XYQuad.Planar());
            Assert.AreEqual(new[] { 4 }, XYQuad.FaceSizes.ToArray());
            Assert.AreEqual(new[] { 0 }, XYQuad.FaceIndices.ToArray());
            Assert.AreEqual(new[] { 0, 1, 2, 3 }, XYQuad.Indices.ToArray());

            Assert.AreEqual(4, XYQuadFromFunc.PointsPerFace);
            Assert.AreEqual(1, XYQuadFromFunc.FaceCount());
            Assert.AreEqual(4, XYQuadFromFunc.Vertices.Count);
            Assert.AreEqual(4, XYQuadFromFunc.Indices.Count);
            Assert.AreEqual(2, XYQuadFromFunc.Triangles().Count);
            Assert.AreEqual(1, XYQuadFromFunc.Area(), SmallTolerance);
            Assert.IsTrue(XYQuadFromFunc.Planar());
            Assert.AreEqual(new[] { 4 }, XYQuadFromFunc.FaceSizes.ToArray());
            Assert.AreEqual(new[] { 0 }, XYQuadFromFunc.FaceIndices.ToArray());
            //Assert.AreEqual(new[] { 0, 1, 2, 3 }, XYQuadFromFunc.Indices.ToArray());

            Assert.AreEqual(4, XYQuad2x2.PointsPerFace);
            Assert.AreEqual(4, XYQuad2x2.FaceCount());
            Assert.AreEqual(9, XYQuad2x2.Vertices.Count);
            Assert.AreEqual(16, XYQuad2x2.Indices.Count);
            Assert.AreEqual(8, XYQuad2x2.Triangles().Count);
            Assert.AreEqual(1, XYQuad2x2.Area(), SmallTolerance);
            Assert.IsTrue(XYQuad2x2.Planar());
            Assert.AreEqual(new[] { 4, 4, 4, 4 }, XYQuad2x2.FaceSizes.ToArray());
            Assert.AreEqual(new[] { 0, 4, 8, 12 }, XYQuad2x2.FaceIndices.ToArray());
            //Assert.AreEqual(new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, XYQuad2x2.Indices.ToArray());

            Assert.AreEqual(3, Tetrahedron.PointsPerFace);
            Assert.AreEqual(4, Tetrahedron.FaceCount());
            Assert.AreEqual(4, Tetrahedron.Vertices.Count);
            Assert.AreEqual(12, Tetrahedron.Indices.Count);
            Assert.AreEqual(new[] { 3, 3, 3, 3 }, Tetrahedron.FaceSizes.ToArray());
            Assert.AreEqual(new[] { 0, 3, 6, 9 }, Tetrahedron.FaceIndices.ToArray());
            Assert.AreEqual(TestTetrahedronIndices, Tetrahedron.Indices.ToArray());

            Assert.AreEqual(3, XYTriangleTwice.PointsPerFace);
            Assert.AreEqual(2, XYTriangleTwice.FaceCount());
            Assert.AreEqual(6, XYTriangleTwice.Vertices.Count);
            Assert.AreEqual(6, XYTriangleTwice.Indices.Count);
            Assert.AreEqual(2, XYTriangleTwice.Triangles().Count);
            Assert.AreEqual(1.0, XYTriangleTwice.Area(), SmallTolerance);
            Assert.IsTrue(XYTriangleTwice.Planar());
            Assert.AreEqual(new[] { 3, 3 }, XYTriangleTwice.FaceSizes.ToArray());
            Assert.AreEqual(new[] { 0, 3, }, XYTriangleTwice.FaceIndices.ToArray());
            Assert.AreEqual(new[] { 0, 1, 2, 3, 4, 5 }, XYTriangleTwice.Indices.ToArray());
        }
 static void Measure(IGeometry geo)
 {
     Console.WriteLine(geo);
     Console.WriteLine(geo.Area());
     Console.WriteLine(geo.Perim());
 }