python绘制直线的方法

yipeiwu_com6年前Python基础

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

#!/usr/bin/env python
 
import vtk
 
# 绘制通用方法
def myshow(linepolydata):
 # Now we'll look at it.
 lineMapper = vtk.vtkPolyDataMapper()
 if vtk.VTK_MAJOR_VERSION <= 5:
  lineMapper.SetInput(linepolydata)
 else:
  lineMapper.SetInputData(linepolydata)
  lineMapper.SetScalarRange(0, 2)
 lineActor = vtk.vtkActor()
 lineActor.SetMapper(lineMapper)
 
 # 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(lineActor)
 renderer.SetActiveCamera(camera)
 renderer.ResetCamera()
 renderer.SetBackground(0, 0, 0)
 
 renWin.SetSize(300, 300)
 
 # interact with data
 renWin.Render()
 iren.Start()
 del lineMapper
 del lineActor
 del camera
 del renderer
 del renWin
 del iren
 
 
def main():
 # 直线在三维坐标系中的2个顶点
 x = [(0.0, 0.0, 0.0),(1.0, 0.0, 0.0), (0.0, 1.0, 0.0)]
 
 # We'll create the building blocks of polydata including data attributes.
 linepoly = vtk.vtkPolyData()
 points = vtk.vtkPoints()
 lines = vtk.vtkCellArray()
 scalars = vtk.vtkFloatArray()
 
 for i in range(3):
  points.InsertNextPoint(x[i])
 linepoly.SetPoints(points)
 
 line0 = vtk.vtkLine()
 line0.GetPointIds().SetId(0, 0); # 第二个0表示pts中的origin点
 line0.GetPointIds().SetId(1, 1); # 第二个1表示pts中的p0点
 
 line1 = vtk.vtkLine()
 line1.GetPointIds().SetId(0, 0);
 line1.GetPointIds().SetId(1, 2);
 
 lines.InsertNextCell(line0)
 lines.InsertNextCell(line1)
 linepoly.SetLines(lines);
 
 colors = vtk.vtkUnsignedCharArray()
 colors.SetNumberOfComponents(3);
 red = [255, 0, 0]
 colors.InsertNextTypedTuple(red);
 green = [0, 255, 0]
 colors.InsertNextTypedTuple(green);
 linepoly.GetCellData().SetScalars(colors);
 
 del points
 del lines
 del scalars
 del colors
 myshow(linepoly)
 # Clean up
 del linepoly
 
 
 
main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python 参数列表中的self 显式不等于冗余

self在区分全局变量/函数和对象中的成员变量/函数十分有用。例如,它提供了一种作用域机制,我个人认为比Ruby的@和@@清晰多了,这可能是习惯使然吧,但它确实和C++、Java中的th...

python中实现精确的浮点数运算详解

为什么说浮点数缺乏精确性? 在开始本文之前,让我们先来谈谈浮点数为什么缺乏精确性的问题,其实这不是Python的问题,而是实数的无限精度跟计算机的有限内存之间的矛盾。 举个例子,假如说我...

python3+PyQt5自定义视图详解

python3+PyQt5自定义视图详解

pyqt提供的几个视图类都可以较好工作,包括QLisView,QTableView和QTreeView。但是对于一些难以用现有的方式来呈现数据,这时,可以创建我们自己的视图子类并将其用做...

Python使用微信itchat接口实现查看自己微信的信息功能详解

Python使用微信itchat接口实现查看自己微信的信息功能详解

本文实例讲述了Python使用微信itchat接口实现查看自己微信的信息功能。分享给大家供大家参考,具体如下: itchat是python的一个api,可以访问自己的微信信息,功能还蛮好...

对python3新增的byte类型详解

对python3新增的byte类型详解

在python2中字节类型同字符类型区分不大,但是在python3中最重要的特性是对文本和二进制数据做了更加清晰的区分,文本总是Unicode,由字符类型表示,而二进制数据则由byte类...