• Python科学计算与可视化 C1


    1. 介绍

    • 可视化,即将事物或者过程进行抽象,最终以图像或图像的形式进行展示。最早由美国国家科学基金会(NSF)提出

    • 可视化可分为信息可视化与科学可视化。信息可视化即将抽象的信息与知识进行抽象并展示。科学可视化即将空间数据(工程或者测量的数据)进行可视化计算与展示的过程

    1.1 科学可视化方法

    • 包括 二维标量数据场可视化、三维标量数据场可视化以及矢量数据场可视化
    1. 二维标量数据场可视化
    • 颜色映射法: 将染色与数据之间建立映射关系

    在这里插入图片描述

    • 等值线法: 图中对象的数值指标的各个点连接成平滑的曲线,用一组的数据表示连续面状的图像,使其数值特征渐变的方法

    在这里插入图片描述

    • 立体图法与层次分割法:(地形数据场)立体图法使用立体的图像来显示平面的数据,将平面数据场的数据转化为高度;层次分割,对立体图中的三角面片进行分层,是各个层之间由明确的分割线

    **加粗样式**

    1.2 三维标量可视化

    包括面绘制法与体绘制法

    • 面绘制法: 使用图形还原三维空间结构,使用面展示出来

    在这里插入图片描述

    • 体绘制法:不仅仅展示表面的细节,更有空间的细节,将三维空间中离散的数据,直接转换为立体图像,中间不需要几何图元

    在这里插入图片描述

    1.3 矢量数据场

    • 直接法

    使用箭头、方向、色轮等表示矢量的数据

    在这里插入图片描述

    • 流线法:流场在在某一时间的流动概念,能表示各点流体的方向

    在这里插入图片描述

    2. TVTK库

    2.1 TVTK库安装

    下载**VTK numpy traits mayavi pyQt5(支持py3.8)**之后才能使用TVTK,下载完之后按照顺序安装

    1. 使用whl进行安装

    whl下载: https://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
    分别下载对应python版本

    1. 使用pip进行安装(推荐)

    安装前配置国内的镜像

    pip install VTK
    pip install numpy 
    pip install traits
    pip install PyQt5
    pip install mayavi
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装完之后即可使用

    2.2 代码测试

    1. 使用tvtk_doc
    from tvtk.tools import tvtk_doc
    tvtk_doc.main()
    
    
    • 1
    • 2
    • 3
    1. 使用VTK创建立方体
    from tvtk.api import tvtk
    cube = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0)
    print(cube)
    
    
    • 1
    • 2
    • 3
    • 4
    vtkCubeSource (0000028C84E2DD70)
      Debug: Off
      Modified Time: 1311820
      Reference Count: 2
      Registered Events: 
        Registered Observers:
          vtkObserver (0000028C8BAC8C70)
            Event: 33
            EventName: ModifiedEvent
            Command: 0000028C8CBE0F60
            Priority: 0
            Tag: 1
      Executive: 0000028C8445DD00
      ErrorCode: No error
      Information: 0000028C8B99D6A0
      AbortExecute: Off
      Progress: 0
      Progress Text: (None)
      X Length: 1
      Y Length: 2
      Z Length: 3
      Center: (0, 0, 0)
      Output Points Precision: 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.3 TVTK 与 VTK

    • TVTK在类名中去除了vtk前缀
    • 命名按照python的方式,使用下划线连接单词: `AddItem -> add_item’
    • VTK对象的方法在TVTK中使用traits属性代替
    m.SetInputConnection(c.GetOUtputPort())   # VTK用法
    m.input_connection(c.output_port)   # TVTK用法
    
    • 1
    • 2

    3 创建基本三维对象

    基本的三维对象有:

    1. CubeSource: 立方体
    2. ConeSource: 圆锥
    3. CylinderSource: 圆柱
    4. ArcSource: 圆弧
    5. ArrowSource: 箭头

    每个三维对象有不同的属性,以Cube为例

    s.x_length
    s.y_length
    s.z_length
    s.center
    s.output_points_precision   # 立方体对象的精度
    
    • 1
    • 2
    • 3
    • 4
    • 5

    对这些属性可以进行操作

    4 使用VTK显示三维对象

    对三维数据进行展示时,由于计算机屏幕是二维的,因此要实现不同的映射

    基本步骤:

    1. 创建数据源
    2. 使用PolyDataMapper将数据转换为图形数据
    3. 创建Actor,并传入数据
    4. 创建Renderer(相当于一个舞台),将Actor添加到Renderer中
    5. 创建RenderWindow,将Renderer添加到窗口中(舞台要在桌面展示)
    6. 创建窗口交互,并传入窗口
    7. 初始化窗口并启动
    from tvtk.api import tvtk
    
    # 1, 创建数据源
    cube = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0, center=(0, 0, 0))
    # 2. 转为图像数据
    data_mapper = tvtk.PolyDataMapper(input_connection=cube.output_port)
    # 3 创建actor
    actor = tvtk.Actor(mapper=data_mapper)
    # 4 创建绘制对象
    render = tvtk.Renderer(background=(0, 0, 0))
    render.add_actor(actor)
    # 5. 创建窗口
    render_window = tvtk.RenderWindow(size=(600, 600))
    render_window.add_renderer(render)
    
    # 6.创建交互
    window_interactor = tvtk.RenderWindowInteractor(render_window=render_window)
    
    # 7.开启
    window_interactor.initialize()
    window_interactor.start()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

  • 相关阅读:
    深入学习Semantic Kernel:创建和配置prompts functions
    树莓派(四)树莓派外设开发基础篇
    C语言 变量的存储和引用,内部和外部函数
    Linux调试器-gdb使用
    【重识云原生】第六章容器6.4.4节——ReplicaSet组件
    mybatis
    Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups
    程序设计与算法(三)C++面向对象程序设计 第六周 多态 笔记
    C++和汇编混编开发
    4.【Linux虚拟机】创建自己的docker image并提供后端服务
  • 原文地址:https://blog.csdn.net/qq_44776065/article/details/126194601