news 2026/5/1 9:56:04

Lorenz 标量填充vtkStructuredPoints生成的三位体素数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Lorenz 标量填充vtkStructuredPoints生成的三位体素数据

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①三维体素数据的填充


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import vtkMinimalStandardRandomSequence, vtkShortArray from vtkmodules.vtkCommonDataModel import vtkStructuredPoints from vtkmodules.vtkFiltersCore import vtkContourFilter from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() Pr = 10.0 # The Lorenz parameters b = 2.667 r = 28.0 h = 0.01 # integration step size resolution = 200 # slice resolution iterations = 10000000 # number of iterations xmin = -30.0 # x, y, z range for voxels xmax = 30.0 ymin = -30.0 ymax = 30.0 zmin = -10.0 zmax = 60.0 # Take a stab at an integration step size. xIncr = resolution / (xmax - xmin) yIncr = resolution / (ymax - ymin) zIncr = resolution / (zmax - zmin) randomSequence = vtkMinimalStandardRandomSequence() randomSequence.SetSeed(8775070) x = randomSequence.GetRangeValue(xmin, xmax) randomSequence.Next() y = randomSequence.GetRangeValue(ymin, ymax) randomSequence.Next() z = randomSequence.GetRangeValue(zmin, zmax) randomSequence.Next() # allocate memory for the slices sliceSize = resolution * resolution numPts = sliceSize * resolution scalars = vtkShortArray() for i in range(0, numPts): scalars.InsertTuple1(i, 0) for j in range(0, iterations): # Integrate to the next time step. xx = x + h * Pr * (y - x) yy = y + h * (x * (r - z) - y) zz = z + h * (x * y - (b * z)) x = xx y = yy z = zz # Calculate the voxel index. if xmax > x > xmin and ymax > y > ymin and zmax > z > zmin: xxx = int(float(xx - xmin) * xIncr) yyy = int(float(yy - ymin) * yIncr) zzz = int(float(zz - zmin) * zIncr) index = xxx + yyy * resolution + zzz * sliceSize scalars.SetTuple1(index, scalars.GetTuple1(index) + 1) """ 使用**vtkStructuredPoints类来创建一个三维体数据(volume data)对象, 并用之前模拟洛伦兹吸引子轨迹得到的标量数据**填充它 """ volume = vtkStructuredPoints() volume.GetPointData().SetScalars(scalars) volume.SetDimensions(resolution, resolution, resolution) volume.SetOrigin(xmin, ymin, zmin) volume.SetSpacing((xmax - xmin) / resolution, (ymax - ymin) / resolution, (zmax - zmin) / resolution) # Create iso-surface contour = vtkContourFilter() contour.SetInputData(volume) contour.SetValue(0, 50) # Create mapper. mapper = vtkPolyDataMapper() mapper.SetInputConnection(contour.GetOutputPort()) mapper.ScalarVisibilityOff() # Create actor. actor = vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(colors.GetColor3d('DodgerBlue')) renderer = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d('PaleGoldenrod')) renWin.SetSize(640, 480) # interact with data renWin.Render() renWin.SetWindowName('Lorenz') camera = renderer.GetActiveCamera() camera.SetPosition(-67.645167, -25.714343, 63.483516) camera.SetFocalPoint(3.224902, -4.398594, 29.552112) camera.SetViewUp(-0.232264, 0.965078, 0.121151) camera.SetDistance(81.414176) camera.SetClippingRange(18.428905, 160.896031) iren.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:26:18

NeurlPS‘25开源 | 中科院新作AutoSeg3D:在线分割一切3D物体,超越ESAM!

点击下方卡片,关注「3D视觉工坊」公众号选择星标,干货第一时间送达来源:3D视觉工坊「3D视觉从入门到精通」知识星球(点开有惊喜) !星球内新增20多门3D视觉系统课程、入门环境配置教程、多场顶会直播、顶会论文最新解读、3D视觉算法…

作者头像 李华
网站建设 2026/5/1 7:55:20

锐捷RGSP | VSU技术介绍

一、VSU概述 1. 传统可靠性网络 在传统网络中,为了增强网络的可靠性,在核心层部署两台交换机,分别连接所有汇聚层交换机。为了消除环路,在核心层交换机和汇聚层交换机上配置MSTP协议,阻塞一部分链路。为了提供冗余网关,在核心层交换机上配置VRRP协议。 MSTP+VRRP架构的…

作者头像 李华
网站建设 2026/5/1 7:30:12

锐捷RGSP | VRRP原理及配置

一、VRRP概述 1. VRRP背景 VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,是由IETF提出的解决局域网中配置静态网关出现单点失效现象的协议。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败不会引起混乱,允许主机使用当路由器。在实…

作者头像 李华
网站建设 2026/5/1 9:55:29

2025代码大模型新标杆:Qwen3-Coder重构企业开发效率

2025代码大模型新标杆:Qwen3-Coder重构企业开发效率 【免费下载链接】Qwen3-Coder-30B-A3B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-Coder-30B-A3B-Instruct 导语 阿里达摩院最新发布的Qwen3-Coder-30B-A3B-Instruct代码大模型&…

作者头像 李华
网站建设 2026/4/30 18:07:49

AI金融风控:从理论框架到产业实践的技术演进

人工智能正在重塑金融风险管理的基础范式,通过深度学习、联邦学习等前沿技术构建了新一代智能风控体系。本文基于系统性方法论,深入分析AI在金融风控中的理论创新、技术实现与行业应用,为金融机构提供可落地的技术实施方案。 【免费下载链接】…

作者头像 李华
网站建设 2026/4/25 2:31:05

26、深入探索Bash脚本调试技巧

深入探索Bash脚本调试技巧 1. 引言 在编程的世界里,调试是一项不可或缺的技能。对于Bash脚本编程而言,虽然它具备丰富的特性和控制结构,但强大的调试工具却相对匮乏。本文将深入探讨Bash脚本调试的相关知识,介绍一些实用的调试辅助工具和技巧,帮助你更高效地找出脚本中的…

作者头像 李华