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); }
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(); }
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); }