国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python Grid使用和布局詳解

2020-02-15 22:06:39
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Python Grid使用和布局的具體代碼,供大家參考,具體內容如下

#!/usr/bin/env python import vtk # 這個示例主要用于將不同的圖像對象顯示到指定的Grid中 def main(): colors = vtk.vtkNamedColors()  # Set the background color. colors.SetColor("BkgColor", [51, 77, 102, 255])  titles = list() textMappers = list() textActors = list()  uGrids = list() mappers = list() actors = list() renderers = list()  uGrids.append(MakeHexagonalPrism()) titles.append('Hexagonal Prism') uGrids.append(MakeHexahedron()) titles.append('Hexahedron') uGrids.append(MakePentagonalPrism()) titles.append('Pentagonal Prism')  uGrids.append(MakePolyhedron()) titles.append('Polyhedron') uGrids.append(MakePyramid()) titles.append('Pyramid') uGrids.append(MakeTetrahedron()) titles.append('Tetrahedron')  uGrids.append(MakeVoxel()) titles.append('Voxel') uGrids.append(MakeWedge()) titles.append('Wedge')  renWin = vtk.vtkRenderWindow() renWin.SetWindowName('Cell3D Demonstration')  iRen = vtk.vtkRenderWindowInteractor() iRen.SetRenderWindow(renWin)  # Create one text property for all textProperty = vtk.vtkTextProperty() textProperty.SetFontSize(16) textProperty.SetJustificationToCentered()  # Create and link the mappers actors and renderers together. # 為每個獨立的文本圖形對象創建獨立的Mapper和Actors,并綁定至每個grid中 for i in range(0, len(uGrids)):  textMappers.append(vtk.vtkTextMapper())  textActors.append(vtk.vtkActor2D())#   mappers.append(vtk.vtkDataSetMapper())  actors.append(vtk.vtkActor())  renderers.append(vtk.vtkRenderer())   mappers[i].SetInputData(uGrids[i])  actors[i].SetMapper(mappers[i])  actors[i].GetProperty().SetColor(   colors.GetColor3d("Seashell"))  renderers[i].AddViewProp(actors[i])   textMappers[i].SetInput(titles[i])  textMappers[i].SetTextProperty(textProperty)   textActors[i].SetMapper(textMappers[i])  textActors[i].SetPosition(120, 16)  renderers[i].AddViewProp(textActors[i])   renWin.AddRenderer(renderers[i])  gridDimensions = 3 rendererSize = 300  renWin.SetSize(rendererSize * gridDimensions,     rendererSize * gridDimensions)  # 渲染圖形對象至不同的顯示區域 for row in range(0, gridDimensions):  for col in range(0, gridDimensions):   index = row * gridDimensions + col    # (xmin, ymin, xmax, ymax)   viewport = [    float(col) * rendererSize /    (gridDimensions * rendererSize),    float(gridDimensions - (row + 1)) * rendererSize /    (gridDimensions * rendererSize),    float(col + 1) * rendererSize /    (gridDimensions * rendererSize),    float(gridDimensions - row) * rendererSize /    (gridDimensions * rendererSize)]    if index > len(actors) - 1:    # Add a renderer even if there is no actor.    # This makes the render window background all the same color.    ren = vtk.vtkRenderer()    ren.SetBackground(colors.GetColor3d("BkgColor"))    ren.SetViewport(viewport)    renWin.AddRenderer(ren)    continue    renderers[index].SetViewport(viewport)   renderers[index].SetBackground(colors.GetColor3d("BkgColor"))   renderers[index].ResetCamera()   renderers[index].GetActiveCamera().Azimuth(30)   renderers[index].GetActiveCamera().Elevation(-30)   renderers[index].GetActiveCamera().Zoom(0.85)   renderers[index].ResetCameraClippingRange()  iRen.Initialize() renWin.Render() iRen.Start()  def MakeHexagonalPrism(): """  3D: hexagonal prism: a wedge with an hexagonal base.  Be careful, the base face ordering is different from wedge. """  numberOfVertices = 12  points = vtk.vtkPoints()  points.InsertNextPoint(0.0, 0.0, 1.0) points.InsertNextPoint(1.0, 0.0, 1.0) points.InsertNextPoint(1.5, 0.5, 1.0) points.InsertNextPoint(1.0, 1.0, 1.0) points.InsertNextPoint(0.0, 1.0, 1.0) points.InsertNextPoint(-0.5, 0.5, 1.0)  points.InsertNextPoint(0.0, 0.0, 0.0) points.InsertNextPoint(1.0, 0.0, 0.0) points.InsertNextPoint(1.5, 0.5, 0.0) points.InsertNextPoint(1.0, 1.0, 0.0) points.InsertNextPoint(0.0, 1.0, 0.0) points.InsertNextPoint(-0.5, 0.5, 0.0)  hexagonalPrism = vtk.vtkHexagonalPrism() for i in range(0, numberOfVertices):  hexagonalPrism.GetPointIds().SetId(i, i)  ug = vtk.vtkUnstructuredGrid() ug.InsertNextCell(hexagonalPrism.GetCellType(),      hexagonalPrism.GetPointIds()) ug.SetPoints(points)  return ug  def MakeHexahedron(): """  A regular hexagon (cube) with all faces square and three squares around  each vertex is created below.  Setup the coordinates of eight points  (the two faces must be in counter clockwise  order as viewed from the outside).  As an exercise you can modify the coordinates of the points to create  seven topologically distinct convex hexahedras. """ numberOfVertices = 8  # Create the points points = vtk.vtkPoints() points.InsertNextPoint(0.0, 0.0, 0.0) points.InsertNextPoint(1.0, 0.0, 0.0) points.InsertNextPoint(1.0, 1.0, 0.0) points.InsertNextPoint(0.0, 1.0, 0.0) points.InsertNextPoint(0.0, 0.0, 1.0) points.InsertNextPoint(1.0, 0.0, 1.0) points.InsertNextPoint(1.0, 1.0, 1.0) points.InsertNextPoint(0.0, 1.0, 1.0)  # Create a hexahedron from the points hex_ = vtk.vtkHexahedron() for i in range(0, numberOfVertices):  hex_.GetPointIds().SetId(i, i)  # Add the points and hexahedron to an unstructured grid uGrid = vtk.vtkUnstructuredGrid() uGrid.SetPoints(points) uGrid.InsertNextCell(hex_.GetCellType(), hex_.GetPointIds())  return uGrid  def MakePentagonalPrism(): numberOfVertices = 10  # Create the points points = vtk.vtkPoints() points.InsertNextPoint(11, 10, 10) points.InsertNextPoint(13, 10, 10) points.InsertNextPoint(14, 12, 10) points.InsertNextPoint(12, 14, 10) points.InsertNextPoint(10, 12, 10) points.InsertNextPoint(11, 10, 14) points.InsertNextPoint(13, 10, 14) points.InsertNextPoint(14, 12, 14) points.InsertNextPoint(12, 14, 14) points.InsertNextPoint(10, 12, 14)  # Pentagonal Prism pentagonalPrism = vtk.vtkPentagonalPrism() for i in range(0, numberOfVertices):  pentagonalPrism.GetPointIds().SetId(i, i)  # Add the points and hexahedron to an unstructured grid uGrid = vtk.vtkUnstructuredGrid() uGrid.SetPoints(points) uGrid.InsertNextCell(pentagonalPrism.GetCellType(),       pentagonalPrism.GetPointIds())  return uGrid  def MakePolyhedron(): """  Make a regular dodecahedron. It consists of twelve regular pentagonal  faces with three faces meeting at each vertex. """ # numberOfVertices = 20 numberOfFaces = 12 # numberOfFaceVertices = 5  points = vtk.vtkPoints() points.InsertNextPoint(1.21412, 0, 1.58931) points.InsertNextPoint(0.375185, 1.1547, 1.58931) points.InsertNextPoint(-0.982247, 0.713644, 1.58931) points.InsertNextPoint(-0.982247, -0.713644, 1.58931) points.InsertNextPoint(0.375185, -1.1547, 1.58931) points.InsertNextPoint(1.96449, 0, 0.375185) points.InsertNextPoint(0.607062, 1.86835, 0.375185) points.InsertNextPoint(-1.58931, 1.1547, 0.375185) points.InsertNextPoint(-1.58931, -1.1547, 0.375185) points.InsertNextPoint(0.607062, -1.86835, 0.375185) points.InsertNextPoint(1.58931, 1.1547, -0.375185) points.InsertNextPoint(-0.607062, 1.86835, -0.375185) points.InsertNextPoint(-1.96449, 0, -0.375185) points.InsertNextPoint(-0.607062, -1.86835, -0.375185) points.InsertNextPoint(1.58931, -1.1547, -0.375185) points.InsertNextPoint(0.982247, 0.713644, -1.58931) points.InsertNextPoint(-0.375185, 1.1547, -1.58931) points.InsertNextPoint(-1.21412, 0, -1.58931) points.InsertNextPoint(-0.375185, -1.1547, -1.58931) points.InsertNextPoint(0.982247, -0.713644, -1.58931)  # Dimensions are [numberOfFaces][numberOfFaceVertices] dodechedronFace = [  [0, 1, 2, 3, 4],  [0, 5, 10, 6, 1],  [1, 6, 11, 7, 2],  [2, 7, 12, 8, 3],  [3, 8, 13, 9, 4],  [4, 9, 14, 5, 0],  [15, 10, 5, 14, 19],  [16, 11, 6, 10, 15],  [17, 12, 7, 11, 16],  [18, 13, 8, 12, 17],  [19, 14, 9, 13, 18],  [19, 18, 17, 16, 15] ]  dodechedronFacesIdList = vtk.vtkIdList() # Number faces that make up the cell. dodechedronFacesIdList.InsertNextId(numberOfFaces) for face in dodechedronFace:  # Number of points in the face == numberOfFaceVertices  dodechedronFacesIdList.InsertNextId(len(face))  # Insert the pointIds for that face.  [dodechedronFacesIdList.InsertNextId(i) for i in face]  uGrid = vtk.vtkUnstructuredGrid() uGrid.InsertNextCell(vtk.VTK_POLYHEDRON, dodechedronFacesIdList) uGrid.SetPoints(points)  return uGrid  def MakePyramid(): """  Make a regular square pyramid. """ numberOfVertices = 5  points = vtk.vtkPoints()  p = [  [1.0, 1.0, 0.0],  [-1.0, 1.0, 0.0],  [-1.0, -1.0, 0.0],  [1.0, -1.0, 0.0],  [0.0, 0.0, 1.0] ] for pt in p:  points.InsertNextPoint(pt)  pyramid = vtk.vtkPyramid() for i in range(0, numberOfVertices):  pyramid.GetPointIds().SetId(i, i)  ug = vtk.vtkUnstructuredGrid() ug.SetPoints(points) ug.InsertNextCell(pyramid.GetCellType(), pyramid.GetPointIds())  return ug  def MakeTetrahedron(): """  Make a tetrahedron. """ numberOfVertices = 4  points = vtk.vtkPoints() points.InsertNextPoint(0, 0, 0) points.InsertNextPoint(1, 0, 0) points.InsertNextPoint(1, 1, 0) points.InsertNextPoint(0, 1, 1)  tetra = vtk.vtkTetra() for i in range(0, numberOfVertices):  tetra.GetPointIds().SetId(i, i)  cellArray = vtk.vtkCellArray() cellArray.InsertNextCell(tetra)  unstructuredGrid = vtk.vtkUnstructuredGrid() unstructuredGrid.SetPoints(points) unstructuredGrid.SetCells(vtk.VTK_TETRA, cellArray)  return unstructuredGrid  def MakeVoxel(): """  A voxel is a representation of a regular grid in 3-D space. """ numberOfVertices = 8  points = vtk.vtkPoints() points.InsertNextPoint(0, 0, 0) points.InsertNextPoint(1, 0, 0) points.InsertNextPoint(0, 1, 0) points.InsertNextPoint(1, 1, 0) points.InsertNextPoint(0, 0, 1) points.InsertNextPoint(1, 0, 1) points.InsertNextPoint(0, 1, 1) points.InsertNextPoint(1, 1, 1)  voxel = vtk.vtkVoxel() for i in range(0, numberOfVertices):  voxel.GetPointIds().SetId(i, i)  ug = vtk.vtkUnstructuredGrid() ug.SetPoints(points) ug.InsertNextCell(voxel.GetCellType(), voxel.GetPointIds())  return ug  def MakeWedge(): """  A wedge consists of two triangular ends and three rectangular faces. """  numberOfVertices = 6  points = vtk.vtkPoints()  points.InsertNextPoint(0, 1, 0) points.InsertNextPoint(0, 0, 0) points.InsertNextPoint(0, .5, .5) points.InsertNextPoint(1, 1, 0) points.InsertNextPoint(1, 0.0, 0.0) points.InsertNextPoint(1, .5, .5)  wedge = vtk.vtkWedge() for i in range(0, numberOfVertices):  wedge.GetPointIds().SetId(i, i)  ug = vtk.vtkUnstructuredGrid() ug.SetPoints(points) ug.InsertNextCell(wedge.GetCellType(), wedge.GetPointIds())  return ug  def WritePNG(renWin, fn, magnification=1): """  Screenshot  Write out a png corresponding to the render window.  :param: renWin - the render window.  :param: fn - the file name.  :param: magnification - the magnification. """ windowToImageFilter = vtk.vtkWindowToImageFilter() windowToImageFilter.SetInput(renWin) windowToImageFilter.SetMagnification(magnification) # Record the alpha (transparency) channel # windowToImageFilter.SetInputBufferTypeToRGBA() windowToImageFilter.SetInputBufferTypeToRGB() # Read from the back buffer windowToImageFilter.ReadFrontBufferOff() windowToImageFilter.Update()  writer = vtk.vtkPNGWriter() writer.SetFileName(fn) writer.SetInputConnection(windowToImageFilter.GetOutputPort()) writer.Write()  if __name__ == '__main__': main()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 布拖县| 泰和县| 井研县| 芦溪县| 宝清县| 卓资县| 驻马店市| 合作市| 白河县| 武平县| 连平县| 陈巴尔虎旗| 老河口市| 无为县| 阿合奇县| 远安县| 洛宁县| 义马市| 兴海县| 四平市| 衡山县| 彰化市| 林口县| 白城市| 日喀则市| 安化县| 汤阴县| 元阳县| 青冈县| 抚顺县| 桐柏县| 惠来县| 札达县| 墨玉县| 南召县| 霍邱县| 观塘区| 铁岭市| 嫩江县| 桂平市| 白城市|