2026/1/2 13:11:11
网站建设
项目流程
网站设计字体最好用,上海网站建设行业,一个模拟做实验的网站,官方网站制作公司一#xff1a;主要的知识点
1、说明
本文只是教程内容的一小段#xff0c;因博客字数限制#xff0c;故进行拆分。主教程链接#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①平面生成Delaunay2D注意事项#xff0c;…一主要的知识点1、说明本文只是教程内容的一小段因博客字数限制故进行拆分。主教程链接vtk教程——逐行解析官网所有Python示例-CSDN博客2、知识点纪要本段代码主要涉及的有①平面生成Delaunay2D注意事项②如何生成一个带空洞的平面二代码及注释import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import ( vtkMinimalStandardRandomSequence, vtkPoints ) from vtkmodules.vtkCommonDataModel import ( vtkCellArray, vtkPolyData, vtkPolygon ) from vtkmodules.vtkFiltersCore import vtkDelaunay2D from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors vtkNamedColors() rng vtkMinimalStandardRandomSequence() rng.SetSeed(0) gridSize 10 points vtkPoints() for x in range(gridSize): for y in range(gridSize): d1 rng.GetValue() / 2.0 - 0.25 rng.Next() d2 rng.GetValue() / 2.0 - 0.25 rng.Next() points.InsertNextPoint(xd1, yd2, 0) aPolyData vtkPolyData() aPolyData.SetPoints(points) aCellArray vtkCellArray() # vtkPolyGon 多边形单元 aPolygon vtkPolygon() 下面索引的顺序是顺时针的 顺时针定义的内部多边形被视为孔洞剖分会避开此区域,源代码写法是这样的 aPolygon.GetPointIds().InsertNextId(22) aPolygon.GetPointIds().InsertNextId(23) aPolygon.GetPointIds().InsertNextId(24) aPolygon.GetPointIds().InsertNextId(25) aPolygon.GetPointIds().InsertNextId(35) aPolygon.GetPointIds().InsertNextId(45) aPolygon.GetPointIds().InsertNextId(44) aPolygon.GetPointIds().InsertNextId(43) aPolygon.GetPointIds().InsertNextId(42) aPolygon.GetPointIds().InsertNextId(32) aPolygon.GetPointIds().SetNumberOfIds(10) aPolygon.GetPointIds().SetId(0, 22) aPolygon.GetPointIds().SetId(1, 23) aPolygon.GetPointIds().SetId(2, 24) aPolygon.GetPointIds().SetId(3, 25) aPolygon.GetPointIds().SetId(4, 35) aPolygon.GetPointIds().SetId(5, 45) aPolygon.GetPointIds().SetId(6, 44) aPolygon.GetPointIds().SetId(7, 43) aPolygon.GetPointIds().SetId(8, 42) aPolygon.GetPointIds().SetId(9, 32) 下面的索引的顺序是逆时针的 逆时针定义的外部多边形会被视为外部边界只在这里面发生三角剖分 aPolygon.GetPointIds().InsertNextId(32) aPolygon.GetPointIds().InsertNextId(42) aPolygon.GetPointIds().InsertNextId(43) aPolygon.GetPointIds().InsertNextId(44) aPolygon.GetPointIds().InsertNextId(45) aPolygon.GetPointIds().InsertNextId(35) aPolygon.GetPointIds().InsertNextId(25) aPolygon.GetPointIds().InsertNextId(24) aPolygon.GetPointIds().InsertNextId(23) aPolygon.GetPointIds().InsertNextId(22) aCellArray.InsertNextCell(aPolygon) boundary vtkPolyData() boundary.SetPoints(points) boundary.SetPolys(aCellArray) delaunay vtkDelaunay2D() delaunay.SetInputData(aPolyData) # 提供待剖分的100个点 delaunay.SetSourceData(boundary) # 提供了约束信息根据约束信息的顺逆时针决定是不剖分还是只剖分这个不分 # Visualize meshMapper vtkPolyDataMapper() meshMapper.SetInputConnection(delaunay.GetOutputPort()) meshActor vtkActor() meshActor.SetMapper(meshMapper) meshActor.GetProperty().EdgeVisibilityOn() meshActor.GetProperty().SetEdgeColor(colors.GetColor3d(Peacock)) meshActor.GetProperty().SetInterpolationToFlat() boundaryMapper vtkPolyDataMapper() boundaryMapper.SetInputData(boundary) boundaryActor vtkActor() boundaryActor.SetMapper(boundaryMapper) boundaryActor.GetProperty().SetColor(colors.GetColor3d(Raspberry)) boundaryActor.GetProperty().SetLineWidth(3) boundaryActor.GetProperty().EdgeVisibilityOn() boundaryActor.GetProperty().SetEdgeColor(colors.GetColor3d(Red)) boundaryActor.GetProperty().SetRepresentationToWireframe() # Create a renderer, render window, and interactor renderer vtkRenderer() renderWindow vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) # Add the actor to the scene renderer.AddActor(meshActor) renderer.AddActor(boundaryActor) renderer.SetBackground(colors.GetColor3d(Mint)) # Render and interact renderWindow.SetSize(640, 480) renderWindow.SetWindowName(ConstrainedDelaunay2D) renderWindow.Render() renderWindowInteractor.Start() if __name__ __main__: main()