亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > 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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97久久精品人搡人人玩| 国产日韩在线视频| 亚洲国产成人av在线| 欧美国产亚洲精品久久久8v| 久久综合伊人77777| 上原亚衣av一区二区三区| 欧美精品videossex性护士| 国外成人在线直播| 91精品久久久久久久久久另类| 亚洲成人激情在线| 久久久亚洲福利精品午夜| 欧美日韩亚洲天堂| 亚洲精品aⅴ中文字幕乱码| 日韩av综合网站| 夜夜嗨av一区二区三区免费区| 国产日韩欧美一二三区| 国产精品久久久久久久久久小说| 国产在线精品成人一区二区三区| 韩国精品美女www爽爽爽视频| 国产精品麻豆va在线播放| 日韩av免费网站| 欧洲成人在线观看| 亚洲视屏在线播放| 中文字幕在线亚洲| 亚洲天堂男人天堂| 亚洲一区二区久久久久久久| 国产精品久久久久不卡| 国产欧美精品在线播放| 国产91色在线|免| 色综合伊人色综合网| 欧美极度另类性三渗透| 久久久久久欧美| 亚洲开心激情网| 亚洲福利视频专区| 色噜噜国产精品视频一区二区| 亚洲色图欧美制服丝袜另类第一页| 国产精品美女免费看| 7m第一福利500精品视频| 日韩专区在线观看| 丝袜美腿亚洲一区二区| 欧美视频在线观看 亚洲欧| 九九热这里只有在线精品视| 日韩精品日韩在线观看| 欧美情侣性视频| 成人黄色免费网站在线观看| 国产精品第三页| 久久免费少妇高潮久久精品99| 欧美精品videosex极品1| 欧美视频专区一二在线观看| 欧美一区亚洲一区| 日韩在线视频线视频免费网站| 在线播放国产一区中文字幕剧情欧美| 永久555www成人免费| 亚洲天堂男人的天堂| 中文字幕精品在线| 久久综合伊人77777蜜臀| 欧美成人h版在线观看| 成人精品久久av网站| 国产精品女主播视频| 久久久久久久国产精品视频| 成人乱人伦精品视频在线观看| 91沈先生作品| 亚洲精品一区二区网址| 国产91网红主播在线观看| 久久99久久99精品中文字幕| 国产亚洲欧美另类中文| 亚洲成人精品av| 国产亚洲人成网站在线观看| 成人久久久久爱| 欧美成人免费全部观看天天性色| 欧美黄色片免费观看| 亚洲mm色国产网站| 日本国产精品视频| 日韩精品中文字幕视频在线| 国产精品久久久久久久久久免费| 亚洲欧美第一页| 欧美一区二区大胆人体摄影专业网站| 国产一区二区成人| www亚洲欧美| 国产精品午夜国产小视频| 亚洲国产精品专区久久| 中文字幕日韩欧美精品在线观看| 国产精品稀缺呦系列在线| 日韩精品免费看| 成人激情视频小说免费下载| 91久久在线播放| 国产精品视频成人| 国产一区二区三区中文| 亚洲国产一区二区三区在线观看| 国产成人在线一区二区| 亚洲黄色在线看| 国产69精品久久久久久| 亚洲国产精品va在线看黑人| 欧美激情videoshd| 国产精品白嫩初高中害羞小美女| 亚洲精品国产精品乱码不99按摩| 亚洲片国产一区一级在线观看| 亚洲精品电影网站| 国产成人在线亚洲欧美| 国产69精品久久久久久| 久久精品国产69国产精品亚洲| 久久久久久久电影一区| 日韩中文字幕亚洲| 久久久欧美一区二区| 亚洲男人天堂网| 亚洲日本中文字幕| 福利视频导航一区| 91日本在线观看| 免费97视频在线精品国自产拍| 色噜噜狠狠狠综合曰曰曰| 国产日韩欧美视频在线| 亚洲精品视频免费在线观看| 乱亲女秽乱长久久久| 激情久久av一区av二区av三区| 91精品视频在线免费观看| 欧美日韩一区二区免费在线观看| 九九久久精品一区| 中文字幕欧美精品日韩中文字幕| 亚洲色图25p| 日韩在线观看av| 亚洲综合第一页| 国产在线视频一区| 中文国产亚洲喷潮| 欧美综合国产精品久久丁香| 欧美人与性动交a欧美精品| 国产精品美女主播| 久久久久久久久久久久av| 中文字幕亚洲无线码在线一区| 日韩一区视频在线| 91av在线影院| 久久国产精品久久久久久久久久| 久久久成人的性感天堂| 国产午夜精品理论片a级探花| 国内精品久久久久伊人av| 91超碰中文字幕久久精品| 国产欧美日韩最新| 欧美丝袜第一区| 国产一区二区三区在线播放免费观看| 久久久久久网站| 欧美理论片在线观看| 91免费的视频在线播放| 欧美丝袜一区二区三区| 久久久久女教师免费一区| 国产+成+人+亚洲欧洲| 久久影视免费观看| 91精品久久久久久久久| 国产999精品久久久影片官网| 日本久久亚洲电影| 日韩欧美成人免费视频| 国产91成人在在线播放| 亚洲中国色老太| 国产精品久久久久7777婷婷| 欧美激情精品久久久久久久变态| 国产午夜精品全部视频在线播放| 91久久久久久久久久久久久| 日韩中文字幕av| 永久555www成人免费| 精品女厕一区二区三区| 国产视频精品va久久久久久| 性欧美亚洲xxxx乳在线观看| 欧美在线视频观看免费网站| 日韩av在线看| 欧美亚洲伦理www| 欧美一区二区.|