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使用MONGODB入门实例
May 11 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
Python使用xpath实现图片爬取
Sep 16 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
用Python 执行cmd命令
Dec 18 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 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
Cannot modify header information错误解决方法
2008/10/08 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
javascript编写简易计算器
2017/05/06 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python常用知识点汇总
2016/05/08 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python numpy 按行归一化的实例
2019/01/21 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
浅析NumPy 切片和索引
2020/09/02 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
大学生如何写自荐信
2014/01/08 职场文书
行政主管职责范本
2014/03/07 职场文书
大学开学计划书
2014/04/30 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
MySQL空间数据存储及函数
2021/09/25 MySQL
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库