【PyVista】网状结构,标和单元[mesh,point,cell]的介绍

news2024/9/21 14:10:49

[PyVista] 介绍-CSDN博客中介绍给pyvista的介绍和简单的使用。接下来看看mesh的使用。

一,什么是网格?

        在PyVista中,网格是任何空间引用信息,通常由三维空间中的表面或体积的几何表示组成。我们通常将任何空间引用的数据集称为网格,因此网格、网格和卷之间的区别通常会变得模糊,但这在PyVista中无关紧要。

如果你的数据集是二维几何图形的表面网格,如三角形,我们称之为网格,如果你的数据集是三维几何图形,如体素,四面体,六面体等,那么我们也称之为网格。为什么?因为那样很简单。

        在所有的空间引用数据集中,都存在一个底层的网格结构,它是顶点之间的连通性来定义细胞。无论这些单元格是2D还是3D并不总是那么重要,我们已经努力使PyVista适用于两种或混合几何的数据集,以便您作为用户不必陷入细微差别的困境。

二,什么是点?

        点是网格的顶点,也被称为底层结构的笛卡尔坐标。所有的PyVista数据集(网格)都有点,有时,你可以有一个只有点的网格,比如点云。
例如,您可以使用pyvista创建点云网格。PolyData类,它是为具有1D和2D细胞类型的网格构建的
让我们从点云开始;这是一个只有顶点的网格类型。你可以通过定义笛卡尔坐标的二维数组来创建一个,如下所示:


# 必须在这里设置,因为我们的全局后端可能不是静态的  
import pyvista  # 导入 PyVista 库,用于创建和可视化三维数据  

pyvista.set_plot_theme('document')  # 设置绘图主题为 'document',适合文档展示的配色和样式  

pyvista.set_jupyter_backend('static')  # 将 Jupyter 的后端设置为 'static',以便生成静态图像而不是动态交互式图像  

# 配置全局主题设置  
pyvista.global_theme.window_size = [600, 400]  # 设置绘图窗口的大小为 600x400 像素  

pyvista.global_theme.axes.show = False  # 隐藏坐标轴,使绘图更简洁  

pyvista.global_theme.anti_aliasing = 'fxaa'  # 启用 FXAA(快速近似抗锯齿)来平滑图像边缘,提高可视化的质量  

pyvista.global_theme.show_scalar_bar = False  # 隐藏标量条,标量条通常用于显示颜色映射的信息

 形成点的示例1:

import numpy as np  # 导入 NumPy 库,用于处理数组和生成随机数  
import pyvista as pv  # 导入 PyVista 库,用于三维可视化  

# 创建一个随机数生成器,使用固定的种子(seed=0)以便结果可重复  
rng = np.random.default_rng(seed=0)  

# 生成 100 个随机点,每个点有三个坐标(x, y, z)  
points = rng.random((1000, 3))  

# 将随机生成的点创建为 PyVista 的 PolyData 对象  
mesh = pv.PolyData(points)  

# 绘制点云,点的大小为 10,样式选择为 'points'  
# 这里我们将点的颜色修改为红色  
mesh.plot(point_size=5, style='points', color='red')

运行结果:

 但重要的是要注意,大多数网格在点之间都有某种连接,比如这个网格:

示例代码如下:

import numpy as np  # 导入 NumPy 库,用于处理数组和生成随机数  
import pyvista as pv  # 导入 PyVista 库,用于三维可视化  
import pyvista 

mesh = pyvista.read('hexbeam.stl')
#examples =pyvista.read('001.STL')

#mesh = examples.load_hexbeam()
cpos = [(6.20, 3.00, 7.50),
        (0.16, 0.13, 2.65),
        (-0.28, 0.94, -0.21)]

pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True, color='white')
pl.add_points(mesh.points, color='red',
              point_size=10)
pl.camera_position = cpos
pl.show()

输入文档连接https://download.csdn.net/download/qq_45449625/89777099icon-default.png?t=O83Ahttps://download.csdn.net/download/qq_45449625/89777099

运行结果: 

 这个网格形状也可以使用在不规则曲面上。例如

示例代码如下: 

import numpy as np  # 导入 NumPy 库,用于处理数组和生成随机数  
import pyvista as pv  # 导入 PyVista 库,用于三维可视化  

# 读取 PLY 文件,创建网格对象  
mesh = pyvista.read('FINAL_ASSY_RY_X10.PLY')  

# 设置相机位置  
cpos = [(6.20, 3.00, 7.50),  # 相机位置坐标  
        (0.16, 0.13, 2.65),  # 视点位置坐标  
        (-0.28, 0.94, -0.21)]  # 上方向向量  

# 创建一个 PyVista 绘图器对象  
pl = pv.Plotter()  

# 添加网格到绘图器,显示边缘,颜色为白色  
pl.add_mesh(mesh, show_edges=True, color='white')  

# 在网格上添加点,颜色为红色,点的大小设为 1  
pl.add_points(mesh.points, color='red', point_size=1)  

# 设置相机位置  
pl.camera_position = cpos  

# 显示绘制的场景  
pl.show()

 三,什么是单元?

        单元是点之间的几何形状,它定义了网格的连通性或拓扑结构。在上面的示例中,单元格由连接点(红色)的线(黑色的边缘)定义。例如,在光束示例中,单元格是由网格中8个点之间的区域定义的体素:

import pyvista as pv  # 导入 PyVista 库,用于三维可视化  

# 读取 hexbeam.stl 文件,创建网格对象  
mesh = pyvista.read('hexbeam.stl')  

# 创建一个 PyVista 绘图器对象  
pl = pv.Plotter()  

# 添加网格到绘图器,显示边缘,颜色设为白色  
pl.add_mesh(mesh, show_edges=True, color='white')  

# 在网格上添加点,颜色设为红色,点的大小设为 20  
pl.add_points(mesh.points, color='red', point_size=20)  

# 提取最后一个单元并将其存储在 single_cell 变量中  
single_cell = mesh.extract_cells(mesh.n_cells - 1)  
# 将提取的单元添加到绘图器,颜色为粉色,边缘颜色为蓝色,线宽为 5,显示边缘  
pl.add_mesh(single_cell, color='pink', edge_color='blue',  
            line_width=5, show_edges=True)  

# 提取倒数第二个单元并将其存储在 single_cell 变量中  
single_cell = mesh.extract_cells(mesh.n_cells - 2)  
# 将提取的单元添加到绘图器,颜色为粉色,边缘颜色为黄色,线宽为 5,显示边缘  
pl.add_mesh(single_cell, color='pink', edge_color='yellow',  
            line_width=5, show_edges=True)  

# 设置相机位置  
pl.camera_position = [(6.20, 3.00, 7.50),  # 相机位置坐标  
                      (0.16, 0.13, 2.65),  # 视点位置坐标  
                      (-0.28, 0.94, -0.21)]  # 上方向向量  

# 显示绘制的场景  
pl.show()

 

 单元格不仅限于体素,它们可以是三个 点、两点之间的一条线,甚至单个点都可以是其 自己的单元格(但这是一个特殊情况)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归预测 | Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量…

【java】常见限流算法原理及应用

目录 前言 限流的作用 4种常见限流算法 固定窗口限流 基本原理 简单实现 优点和缺点 滑动窗口限流 基本原理 简单实现 优点和缺点 漏桶限流 基本原理 简单实现 优点和缺点 令牌桶限流 基本原理 简单实现 优点和缺点 算法比较与选择 前言 在现代分布式系统…

102.SAPUI5 sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问失败

目录 原因 解决办法 1.修改谷歌浏览器的setting 2.在tomcat中配置https访问 参考 使用SAPUI5的sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问时,一直打不开摄像头,提示getUserMedia()问题。 原因…

【React】(推荐项目)一个用 React 构建的 CRUD 应用程序

推荐项目:CRUD 应用示例 在本篇文章中,我想向大家推荐一个非常实用的项目:CRUD 应用示例。这个项目展示了如何使用现代技术栈创建一个基础的增删改查(CRUD)应用,非常适合用于学习和实践后端开发技能。 适…

【工具变量】科技金融试点城市DID数据集(2000-2023年)

时间跨度:2000-2023年数据范围:286个地级市包含指标: year city treat post DID(treat*post) 样例数据: 包含内容: 全部内容下载链接: 参考文献-pdf格式:https://…

Navicat连接SQLServer报错

一、Navicat连接SQLServer报错 1.1、问题描述 由于项目原因,需要使用SQLServer作为数据源。Navicat中新建SQLServer的连接,填写完必要信息后连接失败,报错原因如下: 1.2、Navicat的版本 1.3、解决方法 第一步:下载【s…

工厂模式,策略模式,代理模式,单例模式在项目中的应用

项目背景: 首先这篇文章是总结了OJ项目和AI答题平台项目(和一点点的聚合搜索项目)中设计模式的文章 在项目中也用了很多次的设计模式,我感觉起来,这些设计模式的作用就是提高项目的扩展性和降低耦合性 工厂模式&…

Gitlab学习(007 gitlab项目操作)

尚硅谷2024最新Git企业实战教程,全方位学习git与gitlab 总时长 5:42:00 共40P 此文章包含第25p-第p26的内容 文章目录 推送项目到gitlabidea安装gitlab插件配置免密登录推送项目到远程库 在gitlab上创建项目额外功能的使用推送分支到远程库标记功能创建合并请求 推…

leetcode刷题(71-75)

算法是码农的基本功,也是各个大厂必考察的重点,让我们一起坚持写题吧。 遇事不决,可问春风,春风不语,即是本心。 我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可以啦…

IM项目组件学习-----spdlog二次封装

这里写自定义目录标题 封装的原因封装的思想初始化接口的封装对日志输出接口进行宏的封装 封装的原因 1.避免单例的锁冲突,因此直接创建全局的线程安全的日志器进行使用 2.因为日志输出没有文件名行号,因此使用宏进行二次封装输出日志的文件名和行号 3.…

【shell脚本1】Shell脚本学习--入门

目录 简介 Hello World 注释 打印输出 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。 Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的…

昇腾大模型推理解决方案MindIE部署

MindIE大模型推理套件 MindIE(Mind Inference Engine,昇腾推理引擎)是华为公司针对AI全场景推出的整体解决方案,包含丰富的推理加速套件。通过开放各层次AI能力,支撑客户多样化的AI业务需求,使能百模千态&a…

Windows快捷切换Java jdk版本

使用方法 新建txt文本文件,将下方代码粘贴进去编辑对应的jdk路径 如:set JAVA_HOMED:\Java\jdk-17.0.11修改文件后缀为bat,双击运行选择对应版本 echo off rem 切换Java jdk版本 echo 请以管理员来进行切换 java -version:menu echo echo 请…

2024华为杯C题详细完整思路和视频讲解

文章目录 一、背景问题描述数据描述问题问题一: 励磁波形分类问题二: 斯坦麦茨方程(Steinmetz-equation)修正问题三: 磁芯损耗因素分析问题四问题五 参考文献补充磁芯损耗分离模型磁芯损耗经验计算模型 特别注意事项问…

【Android Studio】2024.1.1最新版本AS调试老项目(老版AS项目文件、旧gradle)导入其他人的项目

文章目录 实验环境开始修改项目文件1. 删除.gradle及.idea两个文件夹2.修改SDK路径(本地SDK存放路径)3.修改gradle版本4.修改gradle插件版本(AGP)5.修改JDK版本 实验环境 Android Studio 版本 项目版本 开始修改项目文件 1. 删…

我的AI工具箱Tauri版-MicrosoftTTS文本转语音

本教程基于自研的AI工具箱Tauri版进行MicrosoftTTS文本转语音服务。 MicrosoftTTS文本转语音服务 是自研的AI工具箱Tauri版中的一款功能模块,专为实现高效的文本转语音操作而设计。通过集成微软TTS服务,用户可以将大量文本自动转换为自然流畅的语音文件…

创新驱动,技术引领:2025年广州见证汽车电子技术新高度

汽车行业的创新浪潮正汹涌澎湃,一场引领未来出行的科技盛宴即将拉开帷幕! AUTO TECH 2025 第十二届广州国际汽车电子技术展览会将于 2025 年 11 月 20日至 22 日在广州保利世贸博览馆(PWTC Expo)隆重举行。 作为亚洲地区领先的汽…

树莓派智能语音助手实现音乐播放

树莓派语音助手从诞生的第一天开始,我就想着让它能像小爱音箱一样,可以语音控制播放音乐。经过这些日子的倒腾,今天终于实现了。 接下里,和大家分享下我的实现方法:首先音乐播放模块用的是我在上一篇博文写的《用sound…

netty编程之基于websocket发送二进制数据

写在前面 本文看下基于websocket发送二进制数据。 1:正文 直接看源码吧,主要如下几个类: WebSocketServerProtocolHandler (内置):负责websocket握手消息处理 BinaryWebSocketFrameHandler(自定义):负责处理二进制…

【深入理解SpringCloud微服务】了解微服务的熔断、限流、降级,手写实现一个微服务熔断限流器

【深入理解SpringCloud微服务】了解微服务的熔断、限流、降级,手写实现一个微服务熔断限流器 服务雪崩熔断、限流、降级熔断降级限流 手写实现一个微服务熔断限流器架构设计代码实现整体逻辑ProtectorAspect#aroundMethod(ProceedingJoinPoint)具体实现1、获取接口对…