zoukankan      html  css  js  c++  java
  • 科学计算三维可视化---TVTK入门(创建和显示三维对象)

    一:创建一个基本的三维对象

    (一)长方体操作

    traits:就是TVTK对象的属性

     

    (1)对象属性操作

    >>> from tvtk.api import tvtk
    >>> s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
    >>> print(s)
    >>> s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
    >>> print(s)
    vtkCubeSource (00000000004D4FC0)
      Debug: Off
      Modified Time: 1903583
      Reference Count: 2
      Registered Events:
        Registered Observers:
          vtkObserver (000000000D7E0EE0)
            Event: 33
            EventName: ModifiedEvent
            Command: 00000000121045F0
            Priority: 0
            Tag: 1
      Executive: 000000000D5E32D0
      ErrorCode: No error
      Information: 0000000000481710
      AbortExecute: Off
      Progress: 0
      Progress Text: (None)
      X Length: 1
      Y Length: 2
      Z Length: 3
      Center: (0, 0, 0)
      Output Points Precision: 0
    输出数据
    >>> s.center    #所在坐标系的原点
    array([0., 0., 0.])
    >>> s.x_length   #x轴长度
    1.0
    >>> s.y_length   #y轴长度
    2.0
    >>> s.z_length   #z轴长度
    3.0
    >>> s.output_points_precision  #对象的精度
    0

     (2)对象方法操作

    (二)其他基本三维对象了解

    >>> from tvtk.api import tvtk
    >>> s = tvtk.ConeSource(height=3.0,radius=1.0,resolution=36)  #高度3.0,底面圆半径1.0,底面圆分辨率36(使用36边形近似一个圆形)
    >>> s.height
    3.0
    >>> s.radius
    1.0
    >>> s.resolution
    36
    >>> s.center
    array([0., 0., 0.])
    >>> print(s)
    vtkConeSource (0000000002F71530)
      Debug: Off
      Modified Time: 1903620
      Reference Count: 2
      Registered Events:
        Registered Observers:
          vtkObserver (000000000D7E0430)
            Event: 33
            EventName: ModifiedEvent
            Command: 000000000D4C0CD0
            Priority: 0
            Tag: 1
      Executive: 000000000D2998D0
      ErrorCode: No error
      Information: 000000000D3820C0
      AbortExecute: Off
      Progress: 0
      Progress Text: (None)
      Resolution: 36
      Height: 3
      Radius: 1
      Capping: On
      Center: (0, 0, 0)
      Direction: (1, 0, 0)
      Output Points Precision: 0

    二:显示一个三维对象

    在二维屏幕中显示一个三维对象,需要一个十分复杂的映射过程,特别是与用户交互的时候

    (一)显示一个长方体

    from tvtk.api import tvtk
    
    #创建一个长方体数据源,设置其长宽高
    s = tvtk.CubeSource(x_length=1.0,y_length=2.0,z_length=3.0)
    #使用PolyDataMapper(映射器)将数据转化为图形数据
    m = tvtk.PolyDataMapper(input_connection=s.output_port) #将数据源的输出赋给映射器的输入
    #创建一个Actor
    a = tvtk.Actor(mapper=m)    #是一个实体
    #创建一个Renderer(渲染器),将Actor添加进去
    r = tvtk.Renderer(background=(0,0,0))   #显示背景设为黑色
    r.add_actor(a)  #将Actor添加进去
    #创建一个RenderWindow(窗口),将Renderer添加进去
    w = tvtk.RenderWindow(size=(300,300))   #创建一个显示窗口
    w.add_renderer(r)   #将建立的渲染器加入窗口
    #创建一个RenderWindowInteractor(窗口的交互工具)
    i = tvtk.RenderWindowInteractor(render_window=w)    #创建一个交互工具,将窗口加入交互
    #开启交互
    i.initialize()
    i.start()

  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9298914.html
Copyright © 2011-2022 走看看