news 2026/5/19 11:51:16

SGrid 创建和可视化一个带有矢量数据(Vector Data)的 3D 结构化网格

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SGrid 创建和可视化一个带有矢量数据(Vector Data)的 3D 结构化网格

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①vtkHedgeHog将数据关联到网格上的顶点


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonCore import vtkDoubleArray, vtkMath, vtkPoints from vtkmodules.vtkCommonDataModel import vtkStructuredGrid from vtkmodules.vtkCommonColor import vtkNamedColors import math from vtkmodules.vtkFiltersCore import vtkHedgeHog from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() rMin = 0.5 rMax = 1.0 dims = [13, 11, 11] sgrid = vtkStructuredGrid() sgrid.SetDimensions(dims) vectors = vtkDoubleArray() vectors.SetNumberOfComponents(3) vectors.SetNumberOfTuples(dims[0] * dims[1] * dims[2]) points = vtkPoints() points.Allocate(dims[0] * dims[1] * dims[2]) # 计算了网格中点的总数,分配了空间 deltaZ = 2.0 / (dims[2] - 1) deltaRad = (rMax - rMin) / (dims[1] - 1) x = [0.0] * 3 v = [0.0] * 3 for k in range(0, dims[2]): x[2] = -1.0 + k * deltaZ kOffset = k * dims[0] * dims[1] for j in range(0, dims[1]): radius = rMin + j * deltaRad jOffset = j * dims[0] for i in range(0, dims[0]): theta = i * vtkMath.RadiansFromDegrees(15.0) x[0] = radius * math.cos(theta) x[1] = radius * math.sin(theta) v[0] = -x[1] v[1] = x[0] offset = i + jOffset + kOffset points.InsertPoint(offset, x) vectors.InsertTuple(offset, v) sgrid.SetPoints(points) """ SetVectors 将计算出的 3D 矢量数据场(vectors)作为属性,绑定到结构化网格(sgrid)的每一个点上 点数据 (Point Data):这些属性与几何体上的点一一对应。常见的点数据包括: 标量 (Scalars):如温度、压力(单个数值)。 矢量 (Vectors):如速度、力(三个分量 V ) 张量 (Tensors):用于应力分析等 """ sgrid.GetPointData().SetVectors(vectors) """ vtkHedgeHog 将数据集(如结构化网格、非结构化网格等)上每个点关联的矢量数据, 转化成一系列可渲染的 3D 箭头或直线,从而直观地展示矢量场的方向和强度 """ hedgehog = vtkHedgeHog() hedgehog.SetInputData(sgrid) """ SetScaleFactor 用于控制生成的箭头相对于原始矢量大小的缩放比例 如果矢量值很小,可能需要设置一个较大的 factor 来使箭头清晰可见 如果矢量值很大,可能需要设置一个较小的 factor 来防止箭头互相重叠或溢出屏幕 """ hedgehog.SetScaleFactor(0.1) # 绘制的箭头长度=原始矢量的大小×0.1 sgridMapper = vtkPolyDataMapper() sgridMapper.SetInputConnection(hedgehog.GetOutputPort()) sgridActor = vtkActor() sgridActor.SetMapper(sgridMapper) sgridActor.GetProperty().SetColor(colors.GetColor3d('Gold')) # Create the usual rendering stuff renderer = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(renderer) renWin.SetWindowName('SGrid') iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(sgridActor) renderer.SetBackground(colors.GetColor3d('MidnightBlue')) renderer.ResetCamera() renderer.GetActiveCamera().Elevation(60.0) renderer.GetActiveCamera().Azimuth(30.0) renderer.GetActiveCamera().Dolly(1.0) renWin.SetSize(640, 480) # Interact with the data. renWin.Render() iren.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/19 11:50:56

9个降AI率工具推荐!专科生高效避坑指南

9个降AI率工具推荐!专科生高效避坑指南 AI降重工具,让论文更“自然” 在当今学术写作中,越来越多的专科生开始使用AI工具辅助完成论文写作。然而,随之而来的AIGC率过高、AI痕迹明显等问题也成为了困扰学生们的难题。如何在保证内容…

作者头像 李华
网站建设 2026/5/19 11:51:14

YOLOv8改进 - 注意力机制 | SEAM (Spatially Enhanced Attention Module) 空间增强注意力模块提升遮挡目标特征学习能力

前言 本文提出基于单阶段检测器YOLOv5的实时人脸检测器YOLO - FaceV2,并将SEAM模块集成到YOLOv8中。传统人脸检测算法在精度、速度及处理遮挡等问题上存在不足。SEAM模块采用多头注意力机制,通过深度可分离卷积、1x1卷积、全连接网络学习面部特征&#…

作者头像 李华
网站建设 2026/5/19 11:51:13

python+vue网上选课推荐系统vue前台的设计与实现_w2l3j

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 pythonvue网上选课推荐系统vue前台的设计与实现_w2l3j …

作者头像 李华
网站建设 2026/5/19 11:51:14

9款AI论文助手实测分享:从开题到降重的高效解决方案

AI写论文平台排名:9个实测,开题报告论文降重都好用工具对比排名表格工具名称核心功能突出优势Aibiye降AIGC率适配高校规则,AI痕迹弱化Aicheck论文降重速度快,保留专业术语Askpaper论文降重逻辑完整性好秘塔写作猫智能降重结合语法…

作者头像 李华
网站建设 2026/5/16 1:28:13

【工具】ScreenToGif 视频转动图完整教程

ScreenToGif 视频转动图完整教程 ScreenToGif 是一款 Windows 平台上极受欢迎的免费开源屏幕录制与 GIF/APNG/视频编辑工具。 GitHub 项目地址:https://github.com/NickeManarin/ScreenToGif 截至 2025 年 12 月,项目获得约 26k Stars,最新稳…

作者头像 李华