当前位置: 首页 > news >正文

Python VTK 绘制等高线初步

代码,

import vtkdef create_data():points = vtk.vtkPoints()for x in range(0, 10):for y in range(0, 10):points.InsertNextPoint(x, y, x + y)polys = vtk.vtkCellArray()for x in range(0, 9):for y in range(0, 9 - x):polys.InsertNextCell(4)polys.InsertCellPoint(x * 10 + y)polys.InsertCellPoint(x * 10 + y + 1)polys.InsertCellPoint((x + 1) * 10 + y + 1)polys.InsertCellPoint((x + 1) * 10 + y)#dataset = vtk.vtkDataSet.GetData()dataset = vtk.vtkPolyData()#dataset = vtk.vtkImageData()dataset.SetPoints(points)#dataset.SetPolys(polys)return datasetdef create_contours(input_data, value):contourFilter = vtk.vtkContourFilter()contourFilter.SetInputData(input_data)contourFilter.SetValue(0, value) contourFilter.Update()return contourFilter.GetOutput()def render_contours(contours):mapper = vtk.vtkPolyDataMapper()mapper.SetInputData(contours)actor = vtk.vtkActor()actor.SetMapper(mapper)renderer = vtk.vtkRenderer()renderer.AddActor(actor)renderer.SetBackground(0, 0, 0)renderWindow = vtk.vtkRenderWindow()renderWindow.AddRenderer(renderer)renderWindow.SetSize(640, 480)renderWindowInteractor = vtk.vtkRenderWindowInteractor()renderWindowInteractor.SetRenderWindow(renderWindow)renderWindow.Render()renderWindowInteractor.Start()if __name__ == '__main__':data = create_data()contours = create_contours(data, 50.0)render_contours(contours)

运行,没绘制出来,只出来一个空的屏幕;

先大概看一下代码;

它首先是生成示例数据;往数据集里面加了点和线; 

一开始它的代码是这样,dataset = vtk.vtkDataSet.GetData(),报错了;
   然后改成, dataset = vtk.vtkPolyData(),不会报错,但没绘制东西;
   如果是这样,dataset = vtk.vtkImageData(),也报错;

根据资料,vtk的python的数据集类型有如下几种,

vtkImageData,vtkPolyData,vtkRectilinearGrid,vtkStructuredGrid,vtkUnstructuredGrid,vtkUnstructuredPoints;

光有数据还不能绘制等高线,还要定义等值线过滤器,设置其数值,

    contourFilter.SetInputData(input_data)
    contourFilter.SetValue(0, value) 

把输入数据设置给等值线过滤器,设置过滤器的数值;

一开始value设置的是50,没有绘制出来,一开始设置的点的数值范围是在10左右,把value改为10, 或15,也不会绘制;

其他的代码就是基本的渲染流程;

先初步了解一下,有时间继续;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • image.size()和image.shape包含的信息一样,那image.size()存在的意义是什么?
  • 2024.9.9(极客大挑战 2019]EasySQL,[极客大挑战 2019]Knife)
  • 什么是3PL EDI 集成?优化供应链指南
  • springboot请求传参常用模板
  • CSS属性选择器选择属性值中包含指定字符串的元素
  • Android 12系统源码_应用加载流程(一)资源加载
  • 服务网关工作原理,如何获取用户真实IP?
  • 分享6个我喜欢的常用网站,来看看有没有你感兴趣的!
  • fpga系列 HDL:全连接层InegrationFCpart.v的权重读取 $readmemh
  • Gemini vs Meta — 我给两个AI模型出了7个题,优胜者是...
  • 基于深度学习的基因组数据分析
  • 怎么抓住威士忌蓝海市场?
  • Unity Apple Vision Pro 开发(七):UI 交互 + 虚拟键盘
  • 2024年市场营销人员需要了解的16个Snapchat用户数据
  • 独立产品灵感周刊 DecoHack #067 - 摸鱼神器与AI视频创作工具
  • Apache的基本使用
  • bearychat的java client
  • CODING 缺陷管理功能正式开始公测
  • FineReport中如何实现自动滚屏效果
  • JavaScript新鲜事·第5期
  • Linux CTF 逆向入门
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PAT A1092
  • RxJS: 简单入门
  • SQLServer插入数据
  • 闭包--闭包作用之保存(一)
  • 分布式事物理论与实践
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 技术胖1-4季视频复习— (看视频笔记)
  • 每天10道Java面试题,跟我走,offer有!
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • Java数据解析之JSON
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #13 yum、编译安装与sed命令的使用
  • #Java第九次作业--输入输出流和文件操作
  • #Linux(帮助手册)
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (ZT)出版业改革:该死的死,该生的生
  • (八)c52学习之旅-中断实验
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (六)c52学习之旅-独立按键
  • (面试必看!)锁策略
  • (顺序)容器的好伴侣 --- 容器适配器
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)为什么要选择C++
  • (转)拼包函数及网络封包的异常处理(含代码)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**