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 相关文章推荐
Django框架中方法的访问和查找
Jul 15 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
对Python发送带header的http请求方法详解
Jan 02 Python
python对象与json相互转换的方法
May 07 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
详解Python 最短匹配模式
Jul 29 Python
Python 读取位于包中的数据文件
Aug 07 Python
Python中的datetime包与time包包和模块详情
Feb 28 Python
分享Python获取本机IP地址的几种方法
Mar 17 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python如何删除文件中重复的字段
2019/07/16 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
python Cartopy的基础使用详解
2020/11/01 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
python中的时区问题
2021/01/14 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
电子商务个人自荐信
2013/12/12 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
新春寄语大全
2014/04/09 职场文书
店面出租协议书范本
2014/11/28 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫