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

DisplacementPlot 结构动态可视化

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkWarpVector 根据向量场对几何体进行形变


二:代码及注释

import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkIOLegacy import vtkPolyDataReader from vtkmodules.vtkFiltersGeneral import vtkWarpVector from vtkmodules.vtkFiltersCore import vtkPolyDataNormals, vtkVectorDot from vtkmodules.vtkCommonCore import vtkLookupTable from vtkmodules.vtkRenderingCore import vtkColorTransferFunction, vtkActor, vtkDataSetMapper, vtkRenderer, \ vtkRenderWindow, vtkRenderWindowInteractor def main(): colors = vtkNamedColors() file_name, color_scheme = "Data/plate.vtk", 0 plate = vtkPolyDataReader() plate.SetFileName(file_name) plate.SetVectorsName("mode8") # 指定从输入的 .vtk 文件中读取哪个数据数组作为主要的矢量数据 plate.Update() """ vtkWarpVector 根据向量场对几何体进行形变 """ warp = vtkWarpVector() warp.SetInputConnection(plate.GetOutputPort()) warp.SetScaleFactor(0.5) normals = vtkPolyDataNormals() normals.SetInputConnection(warp.GetOutputPort()) """ vtkVectorDot 主要用于计算两个向量场之间的点积,并把结果作为一个新的标量场输出 """ color = vtkVectorDot() # 在这里只有一个输入,因此计算的是法向矢量与活动矢量之间的点积 color.SetInputConnection(normals.GetOutputPort()) lut = vtkLookupTable() MakeLUT(color_scheme, lut) plateMapper = vtkDataSetMapper() plateMapper.SetInputConnection(color.GetOutputPort()) plateMapper.SetLookupTable(lut) plateMapper.SetScalarRange(-1, 1) plateActor = vtkActor() plateActor.SetMapper(plateMapper) ren = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) ren.AddActor(plateActor) ren.SetBackground(colors.GetColor3d("Wheat")) renWin.SetSize(512, 512) renWin.SetWindowName('DisplacementPlot') ren.GetActiveCamera().SetPosition(13.3991, 14.0764, 9.97787) ren.GetActiveCamera().SetFocalPoint(1.50437, 0.481517, 4.52992) ren.GetActiveCamera().SetViewAngle(30) ren.GetActiveCamera().SetViewUp(- 0.120861, 0.458556, - 0.880408) ren.GetActiveCamera().SetClippingRange(12.5724, 26.8374) renWin.Render() iren.Start() def MakeLUT(colorScheme, lut): nc = 256 ctf = vtkColorTransferFunction() if colorScheme == 1: ctf.SetColorSpaceToDiverging() ctf.AddRGBPoint(0.0, 0.085, 0.532, 0.201) ctf.AddRGBPoint(0.5, 0.865, 0.865, 0.865) ctf.AddRGBPoint(1.0, 0.436, 0.308, 0.631) lut.SetNumberOfTableValues(nc) lut.Build() for i in range(0, nc): rgb = list(ctf.GetColor(float(i) / nc)) rgb.append(1) lut.SetTableValue(i, *rgb) elif colorScheme == 2: nc2 = nc / 2.0 lut.SetNumberOfColors(nc) lut.Build() for i in range(0, int(nc2)): # White to black. v = (nc2 - i) / nc2 lut.SetTableValue(i, v, v, v, 1) for i in range(int(nc2), nc): # Black to white. v = (i - nc2) / nc2 lut.SetTableValue(i, v, v, v, 1) else: ctf.SetColorSpaceToDiverging() ctf.AddRGBPoint(0.0, 0.230, 0.299, 0.754) ctf.AddRGBPoint(1.0, 0.706, 0.016, 0.150) lut.SetNumberOfTableValues(nc) lut.Build() for i in range(0, nc): rgb = list(ctf.GetColor(float(i) / nc)) rgb.append(1.0) lut.SetTableValue(i, *rgb) if __name__ == '__main__': main()
http://www.jsqmd.com/news/232045/

相关文章:

  • ResNet18实战:5分钟搭建高精度图像分类系统
  • ExponentialCosine 复杂的二维数学函数映射为3D曲面
  • STC89C52控制蜂鸣器演奏乐曲完整指南
  • ResNet18实战:教育智能教具识别系统
  • ResNet18优化实战:量化加速推理的完整步骤
  • 通俗解释波形发生器设计中的频率控制
  • ResNet18实战:智能监控系统物体识别部署案例
  • ResNet18实战:构建高稳定性识别服务的关键
  • ResNet18应用解析:智能交通管理系统
  • ResNet18实战教程:服装分类系统开发
  • ResNet18性能测试:CPU环境下的推理速度对比
  • ResNet18应用案例:智能垃圾分类系统
  • 多层板PCB生产流程实例分析:常见缺陷及改善措施
  • ResNet18部署详解:Kubernetes集群部署方案
  • ResNet18入门指南:零代码实现物体识别WebUI
  • ResNet18应用实例:零售货架商品识别系统
  • ResNet18性能测试:批量处理能力评测
  • ResNet18性能优化:CPU推理速度提升5倍的详细步骤
  • ResNet18代码实例:Python调用图像分类API详细教程
  • 无源蜂鸣器驱动电路工作原理深度剖析
  • ResNet18物体识别详解:模型部署常见问题
  • 超详细版:并行计算加速科学仿真的实战案例
  • ResNet18优化教程:早停策略应用
  • ResNet18实战:智能家居物品识别系统
  • ResNet18实战教程:工业机器人视觉系统搭建
  • ResNet18性能对比:与ResNet50差异分析
  • 工业高温环境下蜂鸣器驱动电路稳定性研究
  • 嵌入式Linux中ioctl接口的完整指南
  • ResNet18应用开发:零售客流量分析系统
  • 整流二极管温升问题:桥式电路操作指南