Python实现管线建模 - 3.同心变径管

        往期回顾

Python实现管线建模 || 1.圆直管、方管icon-default.png?t=N7T8https://blog.csdn.net/Xxy9426/article/details/138836778?spm=1001.2014.3001.5501

  对依赖库的补充  

        随着后续内容的深入,我发现单纯靠trimesh库已经无法完成后续的建模(涉及到多个几何体拼接或者是创建较复杂的几何体的情况单单用trimesh铁定是搞不定的),所以需要使用 cmd

pip install trimesh[all] 

来安装  trimesh 及其所有必要依赖库 。 主要包括:

numpy:用于数值计算的基础库。

scipy:提供了额外的科学计算功能。

networkx:用于图和网络分析。

pyglet:用于 OpenGL 的图形库。

shapely:用于几何对象的创建和操作。

rtree:用于空间索引和查询。

Pillow:Python Imaging Library,处理图像文件。

lxml:用于解析和处理 XML 和 HTML。

assimp:Open Asset Import Library,用于读取多种 3D 文件格式。

pyrender:用于渲染三维场景。

        变径管件指的是用于连接不同直径管道的管件,主要用于管道系统中从较大管径的管道过渡到较小管径的管道(或相反)。变径管线在城市管网中有着广泛应用,一般来说是特征点当中的一类。通常出现在流量变化、压力调整或设备连接的场景中。

        根据管件形态的不同,可以将其分为两种类型:

        1.同心变径管:这种变径管的中心轴线是相同的,通常用于垂直或水平管道。

        2.偏心变径管:这种变径管的其中一侧是平的,通常用于水平管道,以避免积水。

        咱们把变径管的内容拆分成两篇文章,今天我们先来进行同心变径管的建模(偏心的我还没搞明白)。同心变径管本质上是一边粗一边细的圆台,形状比较规矩,所以建模流程上比较简单。

        上代码~

import trimesh
import numpy as np

def create_tapered_cylinder(radius_base=0.5, radius_top=1.5, height=3.0, segments=32):
    """
    创建一个圆台形状的三维模型。
    参数:
    radius_base: 圆台底部半径,默认为0.5。
    radius_top: 圆台顶部半径,默认为1.5。
    height: 圆台的高度,默认为3.0。
    segments: 圆台侧面的分段数,默认为32。
    
    返回:
    cylinder_mesh: 圆台的三维网格模型。
    """
    # 创建圆台的底部和顶部圆
    theta = np.linspace(0, 2 * np.pi, segments)  # 生成从0到2π的等差数列,用于计算圆的点
    base_circle = np.column_stack((np.cos(theta) * radius_base, np.sin(theta) * radius_base, np.zeros_like(theta)))  # 底部圆的坐标
    top_circle = np.column_stack((np.cos(theta) * radius_top, np.sin(theta) * radius_top, np.full_like(theta, height)))  # 顶部圆的坐标
    
    # 将底部和顶部圆的坐标合并,形成圆台的顶点
    vertices = np.vstack([base_circle, top_circle])

    # 定义圆台的面
    faces = []
    for i in range(segments - 1):  # 循环创建侧面的面
        faces.append([i, i + 1, i + segments])  # 定义侧面的三角形面
        faces.append([i + 1, i + 1 + segments, i + segments])
    # 闭合圆台的底部和顶部,形成完整的圆台形状
    faces.append([segments - 1, 0, 2 * segments - 1])
    faces.append([0, segments, 2 * segments - 1])

    # 使用trimesh库创建三维网格模型
    cylinder_mesh = trimesh.Trimesh(vertices=vertices, faces=faces)

    return cylinder_mesh

# 创建圆台模型
tapered_cylinder = create_tapered_cylinder()

# 导出圆台模型到OBJ文件
tapered_cylinder.export('output/tapered_cylinder.obj')

        之后本系列文章会继续更新偏心变径管(等我学会、三通、四通、法兰结构等等管线的建模。需要的朋友可以点点关注不迷路~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

采购芯片时细心,再细心!

检查原理图,采购时候的细心对照所费的时远远少于焊完找BUG的时间!!! 购买芯片的时候不光看芯片名称,封装,丝印也要看,如果不一样必须对照两者的引脚图仔细观察是否一样!&#xff01…

边缘检测(一)-灰度图像边缘检测方法

灰度图像边缘检测是数字图像处理与机器视觉中经常遇到的一个问题,边缘检测是否连续、光滑是判断检测方法优劣的一个重要标准,下面通过一个实例提供灰度图像边缘检测方法,该方法对其他图像检测也具有一定的参考价值。 首先,读入一幅…

国际期货常见技术面分析

技术分析方法:通过对市场行为本身的分析来预测价格的变动方向,及主要是对期货市场的日常交易状况,包括价格、交易量与持仓量等数据,按照时间顺序绘制成图形、图表/形成一定的指标系统。然而针对这些图形、图表/指标系统进行分析研…

【C++】类和对象的引入

文章目录 前言一、类的定义二、类的访问控制与封装三、类的作用域四、类的实例化五、类的存储方式及大小计算六、隐藏的this指针 前言 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的&…

一五三、MAC 安装MongoDB可视化工具连接

若没有安装brew包管理工具,在命令行输入安装命令 /bin/bash -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”上面步骤安装完成后,开始安装MongoDB,输入安装命令: brew tap mongodb/brewbrew u…

安装VS Code 提示This User Installer is not meant to be run as an Administrator问题

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 在vs code官网(https://code.visualstudio.com/)下载安装包,显示如下提示信息: This User Installer is not meant to be run as an Administrator.…

HTMLCSS详细总结(提高版)

HTML5的新特性 1. HTML5 新增的语义化标签 <div class“header”> </div> <div class“nav”> </div> <div class“content”> </div> <div class“footer”> </div> <header>&#xff1a;头部标签<nav>&#…

一款超好用的国产 Redis 可视化工具,真香!

哈喽&#xff0c;大家好&#xff0c;我是黑板报君&#xff0c;一个资深的软件开发工程师&#xff0c;致力于为大家分享各领域优质开源项目&#xff0c;开发前沿技术以及互联网技术圈动态。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 日常开发过程中…

微信能上网,但是浏览器不能上网,解决方法

问题&#xff1a;微信能上网&#xff0c;但是浏览器不能上网。更具体的是&#xff0c;连接无线wifi时&#xff0c;微信可以上网&#xff0c;但是浏览器不能上网&#xff1b;连接手机热点时&#xff0c;微信和浏览器均能上网。 解决&#xff1a;试了网上的诸多方法都不起作用&a…

C# OpenCvSharp 车牌颜色识别

C# OpenCvSharp 车牌颜色识别 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace OpenCvSharp_Demo { public partial class Form1 : Form { …

18.实战 LLaMA2-7B 指令微调

实战 LLaMA2-7B 指令微调 实战 LLaMA2-7B 指令微调大模型训练技术总结以模型训练阶段分类&#xff1a;Pre-Training vs Fine-Tuning以微调权重比例分类&#xff1a;FFT vs PEFT以模型训练方法分类&#xff1a;Fine-Tuning vs Instruction-Tuning以模型训练机制分类&#xff1a;…

帕金森患者在饮食上需要注意什么

帕金森病患者在饮食上应该遵循以下几个基本原则&#xff1a; 饮食清淡&#xff1a;应多吃新鲜的水果和蔬菜&#xff0c;如苹果、芹菜、菠菜等&#xff0c;以补充维生素和促进胃肠道蠕动。营养均衡&#xff1a;应多吃富含优质蛋白的食物&#xff0c;如鸡蛋、牛奶&#xff0c;以…

HACH哈希紫外可见光分光光度计维修DR6000

DR3900可见分光光度计内置准双光束光学系统&#xff0c;自动校准波长&#xff0c;该可见光分光光度计预置200多个用户程序&#xff0c;几乎覆盖常规水质参数&#xff0c;彩色触屏搭载中文操作界面&#xff0c;可自动分析检测并存储2000组实验数据&#xff0c;是一款测量准确的可…

高考之后,专业与学校如何选择?

随着2024年高考的结束&#xff0c;考生们面临着选择专业或学校的难题。选择专业意味着专注于一个特定领域&#xff0c;直接影响未来的职业发展和兴趣培养&#xff1b;而选择学校则提供了更优越的学术氛围和广泛的社交机会&#xff0c;对个人综合素质提升有重要作用。无论选择哪…

jdk下载安装及电脑上同时安装多个jdk

一、jdk的下载 官方地址: Java Software | Oracle 系统环境变量配置 1、首先新建JDK1.8和17的JAVA_HOME&#xff0c;他们的变量名区分开&#xff0c;分别为JAVA17_HOME&#xff0c;JAVA8_HOME。分别指向他们的安装地址。 2、新建配置他们可变的地址&#xff0c;这个环境变量的值…

Transformer革新:Infini-Transformer在长文本处理中的突破

在当今信息爆炸的时代&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在处理长文本数据方面的需求日益增长。无论是科学研究、法律分析还是医学诊断&#xff0c;长文本的处理能力都显得尤为重要。然而&#xff0c;现有的基于Transformer的模型在处理这类数据时遇到了重大…

力控算法每日一练:209. 长度最小的子数组(java)

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 class Solution {public int minSu…

【机器学习】机器学习重要分支——集成学习:理论、算法与实践

文章目录 引言第一章 集成学习的基本概念1.1 什么是集成学习1.2 集成学习的类型1.3 集成学习的优势 第二章 集成学习的核心算法2.1 Bagging方法2.2 Boosting方法2.3 Stacking方法 第三章 集成学习的应用实例3.1 图像分类3.2 文本分类 第四章 集成学习的未来发展与挑战4.1 模型多…

深度学习:从理论到应用的全面解析

引言 深度学习作为人工智能&#xff08;AI&#xff09;的核心技术之一&#xff0c;在过去的十年中取得了显著的进展&#xff0c;并在许多领域中展示了其强大的应用潜力。本文将从理论基础出发&#xff0c;探讨深度学习的最新进展及其在各领域的应用&#xff0c;旨在为读者提供全…

《C++ Primer》导学系列:第 5 章 - 语句

5.1 简单语句 5.1.1 基本概念 在C中&#xff0c;简单语句是构成程序的基本单元。每个简单语句以分号&#xff08;;&#xff09;结束&#xff0c;可以是表达式、声明或空语句。 5.1.2 表达式语句 表达式语句是由表达式构成的语句&#xff0c;通常用于计算、赋值和函数调用。 …