python绘制立方体的方法


Posted in Python onJuly 02, 2018

本文实例为大家分享了python绘制立方体的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python
 
# This is (almost) a direct C++ to Python transliteration of
# <VTK-root>/Examples/DataManipulation/Cxx/Cube.cxx from the VTK
# source distribution, which "shows how to manually create vtkPolyData"
#
# A convenience function, mkVtkIdList(), has been added and one if/else
# so the example also works in version 6 or later.
#
# Lines like `obj->Delete()` have been transliterated as `del obj` to,
# preserve the resemblance to the original C++ example, although I
# doubt this achieves anything beyond what Python's garbage collection
# would do anyway.
 
import vtk
 
# Makes a vtkIdList from a Python iterable. I'm kinda surprised that
# this is necessary, since I assumed that this kind of thing would
# have been built into the wrapper and happen transparently, but it
# seems not.
 
 
def mkVtkIdList(it):
 vil = vtk.vtkIdList()
 for i in it:
  vil.InsertNextId(int(i))
 return vil
 
# 绘制通用方法
def myShow(cube):
 # Now we'll look at it.
 cubeMapper = vtk.vtkPolyDataMapper()
 if vtk.VTK_MAJOR_VERSION <= 5:
  cubeMapper.SetInput(cube)
 else:
  cubeMapper.SetInputData(cube)
 cubeMapper.SetScalarRange(0, 7)
 cubeActor = vtk.vtkActor()
 cubeActor.SetMapper(cubeMapper)
 
 # The usual rendering stuff.
 camera = vtk.vtkCamera()
 camera.SetPosition(1, 1, 1)
 camera.SetFocalPoint(0, 0, 0)
 
 renderer = vtk.vtkRenderer()
 renWin = vtk.vtkRenderWindow()
 renWin.AddRenderer(renderer)
 
 iren = vtk.vtkRenderWindowInteractor()
 iren.SetRenderWindow(renWin)
 
 renderer.AddActor(cubeActor)
 renderer.SetActiveCamera(camera)
 renderer.ResetCamera()
 renderer.SetBackground(0, 0, 0)
 
 renWin.SetSize(300, 300)
 
 # interact with data
 renWin.Render()
 iren.Start()
 del cubeMapper
 del cubeActor
 del camera
 del renderer
 del renWin
 del iren
 
def main():
 # x = array of 8 3-tuples of float representing the vertices of a cube:
 # 8个三维值代表长方体的8个顶点
 x = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (1.0, 1.0, 0.0), (0.0, 1.0, 0.0),
   (0.0, 0.0, 1.0), (1.0, 0.0, 1.0), (1.0, 1.0, 1.0), (0.0, 1.0, 1.0)]
 
 # pts = array of 6 4-tuples of vtkIdType (int) representing the faces
 #  of the cube in terms of the above vertices
 # 点的编号0-7,每个面由4个点组成
 pts = [(0, 1, 2, 3), (4, 5, 6, 7), (0, 1, 5, 4),
   (1, 2, 6, 5), (2, 3, 7, 6), (3, 0, 4, 7)]
 
 # We'll create the building blocks of polydata including data attributes.
 cube = vtk.vtkPolyData()
 points = vtk.vtkPoints()
 polys = vtk.vtkCellArray()
 scalars = vtk.vtkFloatArray()
 
 # Load the point, cell, and data attributes.
 for i in range(8):
  points.InsertPoint(i, x[i])
 for i in range(6):
  polys.InsertNextCell(mkVtkIdList(pts[i]))
 for i in range(8):
  scalars.InsertTuple1(i, i)
 
 # We now assign the pieces to the vtkPolyData.
 cube.SetPoints(points)
 del points
 cube.SetPolys(polys)
 del polys
 cube.GetPointData().SetScalars(scalars)
 del scalars
 
 myShow(cube)
 # Clean up
 del cube
 
main()

效果图:

python绘制立方体的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python fileinput模块使用介绍
Nov 30 Python
十条建议帮你提高Python编程效率
Feb 16 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
深入理解Python爬虫代理池服务
Feb 28 Python
python编辑用户登入界面的实现代码
Jul 16 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Python内存映射文件读写方式
Apr 24 Python
django form和field具体方法和属性说明
Jul 09 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
七个非常实用的Python工具包总结
Jun 15 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 #Python
Python实现通过继承覆盖方法示例
Jul 02 #Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 #Python
Python 中的range(),以及列表切片方法
Jul 02 #Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 #Python
分享vim python缩进等一些配置
Jul 02 #Python
实践Vim配置python开发环境
Jul 02 #Python
You might like
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
js中设置元素class的三种方法小结
2011/08/28 Javascript
jquery 笔记 事件
2011/11/02 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python中关键字is与==的区别简述
2014/07/31 Python
Python使用wxPython实现计算器
2018/01/30 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python 防止死锁的方法
2020/07/29 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
服务之星事迹材料
2014/05/03 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
求职简历自荐信
2014/06/18 职场文书
论群众路线学习笔记
2014/11/06 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server