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读写excel的方法
Nov 18 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Python中垃圾回收和del语句详解
Nov 15 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 Python
Python中tqdm的使用和例子
Sep 23 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+dbfile开发小型留言本
2006/10/09 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
smarty简单入门实例
2014/11/28 PHP
浅谈PHP的反射API
2017/02/26 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
如何实现JS函数的重载
2006/09/22 Javascript
表单内同名元素的控制
2006/11/22 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
房屋租赁协议书
2014/10/18 职场文书
2015入党自荐书范文
2015/03/05 职场文书
楚门的世界观后感
2015/06/03 职场文书
我的中国梦主题班会
2015/08/14 职场文书
健康教育主题班会
2015/08/14 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android