Exemple #1
0
        static public void GenerateMesh(CMshBasicMesherDouble aMesher, vtkRenderer aRenderer)
        {
            var aVertex1 = new CGeoCoordinateDouble(+0.00, +0.00, -0.02);
            var aVertex2 = new CGeoCoordinateDouble(+1.00, +0.00, -0.02);
            var aVertex3 = new CGeoCoordinateDouble(+1.00, +0.10, -0.02);
            var aVertex4 = new CGeoCoordinateDouble(+0.00, +0.10, -0.02);
            var aVertex5 = new CGeoCoordinateDouble(+0.00, +0.00, +0.02);
            var aVertex6 = new CGeoCoordinateDouble(+1.00, +0.00, +0.02);
            var aVertex7 = new CGeoCoordinateDouble(+1.00, +0.10, +0.02);
            var aVertex8 = new CGeoCoordinateDouble(+0.00, +0.10, +0.02);

            var aHexahedron = new CGeoHexahedronDouble();

            aHexahedron.addVertex(aVertex1);
            aHexahedron.addVertex(aVertex2);
            aHexahedron.addVertex(aVertex3);
            aHexahedron.addVertex(aVertex4);
            aHexahedron.addVertex(aVertex5);
            aHexahedron.addVertex(aVertex6);
            aHexahedron.addVertex(aVertex7);
            aHexahedron.addVertex(aVertex8);

            aMesher.generate(aHexahedron, 100, 10, 1, false);

            aMesher.mesh().generateFaces(1E-3);
        }
Exemple #2
0
        static public void GenerateMesh(CMshTetrahedronMesherDouble aMesher, vtkRenderer aRenderer)
        {
            var aVertex1 = new CGeoCoordinateDouble(0.0, 0.0, 0.0);
            var aVertex2 = new CGeoCoordinateDouble(1.0, 0.0, 0.0);
            var aVertex3 = new CGeoCoordinateDouble(1.0, 1.0, 0.0);
            var aVertex4 = new CGeoCoordinateDouble(0.0, 1.0, 0.0);
            var aVertex5 = new CGeoCoordinateDouble(0.0, 0.0, 1.0);
            var aVertex6 = new CGeoCoordinateDouble(1.0, 0.0, 1.0);
            var aVertex7 = new CGeoCoordinateDouble(1.0, 1.0, 1.0);
            var aVertex8 = new CGeoCoordinateDouble(0.0, 1.0, 1.0);

            var aHexahedron = new CGeoHexahedronDouble();

            aHexahedron.addVertex(aVertex1);
            aHexahedron.addVertex(aVertex2);
            aHexahedron.addVertex(aVertex3);
            aHexahedron.addVertex(aVertex4);
            aHexahedron.addVertex(aVertex5);
            aHexahedron.addVertex(aVertex6);
            aHexahedron.addVertex(aVertex7);
            aHexahedron.addVertex(aVertex8);

            var aBasicMesher = new CMshBasicMesherDouble();

            aBasicMesher.generate(aHexahedron, 10, 10, 10, true);

            CMshMeshDouble aBoundaryMesh = aBasicMesher.mesh().extractBoundary(1E-6);

            aBoundaryMesh.generateFaces(1E-4);

            var aMeshSize = 0.1;

            aMesher.generate(aBoundaryMesh, 99999, aMeshSize, 0.1, 1E-4);

            aMesher.mesh().renumber();
        }
Exemple #3
0
        static public void DrawPolygon(vtkRenderer aRenderer)
        {
            var aVertex1 = new CGeoCoordinateDouble(+0.00, +0.00, -0.5);
            var aVertex2 = new CGeoCoordinateDouble(+1.00, +0.00, -0.5);
            var aVertex3 = new CGeoCoordinateDouble(+1.00, +1.00, -0.5);
            var aVertex4 = new CGeoCoordinateDouble(+0.00, +1.00, -0.5);
            var aVertex5 = new CGeoCoordinateDouble(+0.00, +0.00, +0.5);
            var aVertex6 = new CGeoCoordinateDouble(+1.00, +0.00, +0.5);
            var aVertex7 = new CGeoCoordinateDouble(+1.00, +1.00, +0.5);
            var aVertex8 = new CGeoCoordinateDouble(+0.00, +1.00, +0.5);

            var aHexahedron = new CGeoHexahedronDouble();

            aHexahedron.addVertex(aVertex1);
            aHexahedron.addVertex(aVertex2);
            aHexahedron.addVertex(aVertex3);
            aHexahedron.addVertex(aVertex4);
            aHexahedron.addVertex(aVertex5);
            aHexahedron.addVertex(aVertex6);
            aHexahedron.addVertex(aVertex7);
            aHexahedron.addVertex(aVertex8);

            var aPolyhedron = new CGeoPolyhedronDouble(aHexahedron);

            double aFracAct;

            int aNewPolygonId = 999;
            var aNewPolygon   = new CGeoPolygonDouble();

            var aNewNormal = new CGeoNormalDouble(0.45, 0.45, 0.1);

            aNewNormal.normalize();

            var    aNewPlane = new CGeoPlaneDouble();
            double d;

            int nIter;

            aPolyhedron = aPolyhedron.clip(aNewPolygon, aNewPolygonId, aNewNormal, out d, 0.6, out aFracAct, out nIter, 100, 1E-5);

            var sPoints   = vtkPoints.New();
            var sPolygons = vtkCellArray.New();

            var sColors = vtkUnsignedCharArray.New();

            sColors.SetNumberOfComponents(3);
            sColors.SetName("Colors");

            int np = 0;

            for (int i = 0; i < aPolyhedron.nbPolygons(); ++i)
            {
                var aPolygon = vtkPolygon.New();

                int aPolygonId = aPolyhedron.polygonId(i);

                aPolygon.GetPointIds().SetNumberOfIds(aPolyhedron.polygon(aPolygonId).polyline().nbVertices() - 1);

                for (int j = 0; j < aPolyhedron.polygon(aPolygonId).polyline().nbVertices() - 1; ++j)
                {
                    var aVertex = aPolyhedron.polygon(aPolygonId).polyline().vertex(j);

                    aPolygon.GetPointIds().SetId(j, np);

                    sPoints.InsertNextPoint(aVertex.x(), aVertex.y(), aVertex.z());

                    if (aPolygonId == aNewPolygonId)
                    {
                        sColors.InsertNextTuple3(255, 255, 0);
                    }
                    else
                    {
                        sColors.InsertNextTuple3(0, 255, 255);
                    }

                    np++;
                }

                // Add the polygon to a list of polygons
                sPolygons.InsertNextCell(aPolygon);
            }

            var aPolygonPolyData = vtkPolyData.New();

            aPolygonPolyData.SetPoints(sPoints);
            aPolygonPolyData.SetPolys(sPolygons);

            aPolygonPolyData.GetPointData().SetScalars(sColors);

            // add actor to the renderer
            var anActor = vtkActor.New();

            aRenderer.AddActor(anActor);

            var aMapper = vtkPolyDataMapper.New();

            aMapper.SetInput(aPolygonPolyData);

            anActor.SetMapper(aMapper);

            anActor.SetMapper(aMapper);
        }