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

Learning vtkjs之ImageStreamline

过滤器 流线

介绍

vtkImageStreamline - 在 vtkImageData 中积分流线

vtkImageStreamline 是一个过滤器,它从定义了向量场的 vtkImageData 输入中生成流线。此过滤器将在输入中查找向量(即 getVectors())。然后,它将使用龙格-库塔 2 法从第二个输入的点定义的起始种子集开始积分这些向量,直到达到指定的最大步数或流线离开域。

输出将是一个包含每条流线的折线的 vtkPolyData。目前,此过滤器不将任何输入场插值到流线的点。

效果

在这里插入图片描述

核心代码

数据生成

const vecSource = macro.newInstance((publicAPI, model) => {macro.obj(publicAPI, model); // make it an objectmacro.algo(publicAPI, model, 0, 1); // mixin algorithm code 1 in, 1 outpublicAPI.requestData = (inData, outData) => {// implement requestDataif (!outData[0]) {const id = vtkImageData.newInstance();id.setSpacing(0.1, 0.1, 0.1);const count = 10;id.setExtent(0, count - 1, 0, count - 1, 0, count - 1);const dims = [count, count, count];const newArray = new Float32Array(3 * dims[0] * dims[1] * dims[2]);let i = 0;for (let z = 0; z < count; z++) {for (let y = 0; y < count; y++) {for (let x = 0; x < count; x++) {newArray[i++] = Math.random() * x;const v = 0.1 * y;newArray[i++] = Math.random() * v;newArray[i++] = 0;}}}const da = vtkDataArray.newInstance({numberOfComponents: 3,values: newArray,});da.setName("vectors");const cpd = id.getPointData();cpd.setVectors(da);// Update outputoutData[0] = id;}};
})();

流线提取

 const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance({background: [0, 0, 0],rootContainer: vtkContainerRef.current,});const renderer = fullScreenRenderer.getRenderer();const renderWindow = fullScreenRenderer.getRenderWindow();const planeSource = vtkPlaneSource.newInstance();// planeSource.setOrigin(0.05, 0.05, 0.05);// planeSource.setPoint1(0.05, 0.85, 0.05);// planeSource.setPoint2(0.05, 0.05, 0.85);planeSource.setOrigin(0.01, 0.0, 0.0);planeSource.setPoint1(0.01, 0.9, 0.0);planeSource.setPoint2(0.01, 0.0, 0.9);const sline = vtkImageStreamline.newInstance();sline.setIntegrationStep(0.01);sline.setInputConnection(vecSource.getOutputPort());sline.setInputConnection(planeSource.getOutputPort(), 1);const outlineFilter = vtkOutlineFilter.newInstance();outlineFilter.setInputConnection(vecSource.getOutputPort());context.current = {planeSource,renderer,renderWindow,};addRepresentation(sline, {diffuseColor: [0, 1, 1],lineWidth: 3,});addRepresentation(outlineFilter, {diffuseColor: [1, 0, 0],lineWidth: 1.5,});addRepresentation(planeSource, {representation: Representation.POINTS,pointSize: 10,});renderer.resetCamera();renderWindow.render();

全部代码都放到github上了
新坑_Learning vtkjs_git地址
关注我,我持续更新vtkjs的example学习案例

也欢迎各位给我提意见,技术交流~

大鸿

WeChat : HugeYen
WeChat Public Account : BIM树洞

做一个静谧的树洞君

用建筑的语言描述IT事物;

用IT的思维解决建筑问题;

共建BIM桥梁,聚合团队。

本学习分享资料不得用于商业用途,仅做学习交流!!如有侵权立即删除!!

http://www.xdnf.cn/news/230581.html

相关文章:

  • 【Fifty Project - D21】
  • w314基于java无人超市管理系统设计与实现
  • 【数据库原理及安全实验】实验五 数据库备份与恢复
  • 短视频矩阵系统贴牌开发实战:批量剪辑文件夹功能设计与实现
  • mybatis-plus 枚举实现模版,导入,导出
  • JVM——Java的基本类型的实现
  • 【ArcGISPro学习笔记】布局输出时图例总是有省略号怎么办?
  • 大连理工大学选修课——机器学习笔记(1):概述
  • 【c++】【STL】list详解
  • Laravel + Vue 3 (Vite、TypeScript) SPA 设置全攻略
  • 在Windows系统上如何用Manifest管理嵌入式项目
  • SVTAV1 编码函数 svt_aom_is_pic_skipped
  • 逻辑回归在信用卡欺诈检测中的实战应用
  • 解决GoLand无法Debug的问题
  • GCC-C语言“自定义段”
  • 2025东三省B题深圳杯B题数学建模挑战赛数模思路代码文章教学
  • AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建
  • 2024睿抗CAIP-编程技能赛-本科组(省赛)题解
  • 软考:硬件中的CPU架构、存储系统(Cache、虚拟内存)、I/O设备与接口
  • iview内存泄漏
  • Copilot重磅更新:引用文件夹创建Word文档
  • OpenCV 4.7企业级开发实战:从图像处理到目标检测的全方位指南
  • 二进制如何与三生原理实现统一?
  • LVGL -按键介绍 下
  • C# 高效操作excel文件
  • JavaWeb学习打卡-Day6-SpringBean管理、SpringBoot自动装配、Maven高级
  • JConsole监控centos服务器中的springboot的服务
  • AbMole小百科:OK432如何为肿瘤和免疫研究开辟新路径?
  • huggingface下载数据和模型,部分下载,本地缓存等常见问题踩坑
  • 计算机视觉综合实训室解决方案