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

Python的3D可视化库 - vedo (1)简介和模块功能概览

文章目录

  • 1. vedo和它支持的功能简介
    • 1.1 安装vedo
    • 1.2 命令行接口
    • 1.3 导出3D文件
    • 1.4 文件格式转换
  • 2. vedo模块功能概览
    • 2.1 绘制和渲染
      • `visual` 管理可视化、对象及其属性的显示的基类
      • `plotter` 3D渲染
      • `colors` 定义和显示颜色
      • `dolfin` FEniCS/Dolfin库的支持
    • 2.2 图形数据管理
      • `mesh` 多边形网格
      • `pointcloud` 点云
      • `shapes` 简单或复杂的几何图形
      • `volume` 使用体素
      • `grids` 四面体网格
      • `image` 普通2D图片
      • `assembly` 图形对象组合
      • `pyplot` 高级绘制功能
      • `core` 为不同的vedo对象提供功能的基类
      • `transformations` 线性或非线性变换
    • 2.3 附加功能和配置
      • `addons` 添加附带的轴、图例、光源等
      • `applications` 可交互的功能
      • `file_io` 读入和导出
      • `utils` 公用工具
      • `interactor_modes` 自定义交互模式
      • `setting` 改变全局行为和风格的设置
  • 3. 模块类的继承关系
    • 3.1 core、visual、volume
    • 3.2 grids
    • 3.3 pointcloud
    • 3.4 mesh
    • 3.5 shapes
    • 3.6 assembly
    • 3.7 addons
    • 3.8 applications

1. vedo和它支持的功能简介

vedo是用于3D对象和点云的科学分析的python模块。基于VTK和numpy实现。

1.1 安装vedo

pip install vedo

测试

import vedovedo.Cone().show(axes=1).close()

1.2 命令行接口

vedo库包含了命令行接口,可以使用vedo --help查看。

1.3 导出3D文件

在弹出的3D场景窗口,按E键,可以把当前的3D场景保存为一个普通的numpy文件。
F可以导出为html网页。

1.4 文件格式转换

使用命令行转换文件格式

# 将obj格式转为ply格式
vedo --convert bunny.obj --to ply

2. vedo模块功能概览

2.1 绘制和渲染

visual 管理可视化、对象及其属性的显示的基类

类或方法说明
CommonVisual管理所有对象的公共可见项的类
PointsVisual管理点对象的可见项的类
VolumeVisual管理体积对象的可见项的类
MeshVisual管理体积对象的可见项的类
ImageVisual管理所有对象的公共可见项的类
Actor2DvtkActor2D的封装
LightKit光工具套件,包括3种光源,主光灯、补光灯、头灯

plotter 3D渲染

类或方法说明
Plotter管理对象的主类
show在空白页创建Plotter实例,并展示给定的对象
close关闭最后创建的Plotter

colors 定义和显示颜色

类或方法说明
printc使用各种颜色输出内容到终端
printd输出关于环境的调试信息。局部变量会输出它们的当前值。
get_color将其它格式的颜色转换为(r,g,b)格式
get_color_name找最接近的颜色的名称
color_map将数值映射到色阶
build_palette通过在HSV或RGB空间线性插值生成N个颜色
build_lut在查找表中生成颜色

dolfin FEniCS/Dolfin库的支持

类或方法说明
plot绘制对象。输入的对象除了MeshVolume外,还可以是dolfin.Meshdolfin.MeshFunctiondolfin.Expressiondolfin.Function

2.2 图形数据管理

mesh 多边形网格

类或方法说明
Mesh创建一个由vedo.PointCloud派生的Mesh的实例

pointcloud 点云

类或方法说明
Points点云
Point创建一个简单的点
CellCenters在任意类型对象的单元格的中心生成Points
merge输入对象组合,创建新的MeshPoints。类似Assembly,但是merge会让输入的对象称为一个单独的实体
fit_line通过点拟合线
fit_circle通过3D点拟合圆
fit_plane一组点拟合一个平面
fit_sphere一组点拟合一个球体
pca_ellipse创建包含指定百分比的点的2D椭圆,PCA用来计算椭圆方向
pca_ellipsoid创建包含指定百分比的点的椭球体,PCA用来计算椭圆方向

shapes 简单或复杂的几何图形

类或方法说明
Maker生成标记。一般和Glyph联用
Line构造两个点之间的线段
DashedLine构造两个点之间的虚线。建议使用Line.pattern()
RoundedLine生成指定宽度、穿过一系列点的2D线段,线段的边缘是圆的
Tube沿着点集定义的线段,创建一个管
TubesLines对象的周围创建管
ThickTube沿着线创建带厚度的管
Lines从两个列表的对应点之间创建线段
Spline找到穿过点集的B样条曲线。
KSpline返回准确穿过所有点的Kochanek样条曲线
CSpline返回准确穿过所有点的Cardinal样条曲线
Bezier生成贝塞尔曲线,连接第一个和最后一个点。
Brace创建花括号
NormalLines创建Glyph,在单元格中心或网格顶点显示法线
Ribbon联结两条线段,生成它们之间的平面
Arrow指定起点、终点和尺寸,创建3D箭头。
Arrows从两个列表的对应点之间创建箭头
Arrow2D创建2D箭头
Arrows2D从两个列表的对应点之间创建2D箭头
FlatArrow通过联结两条线段,在3D空间创建2D箭头
Polygon在xy平面创建多边形
Triangle根据空间中的3个点创建三角形
Rectangle在xy平面创建矩形
Disc创建2D圆环
Circle创建圆
GeoCircle创建圆,其形状像是投影在地图上,越靠近两极就越扁
Arc在两点之间创建圆弧
Star创建2D五角星
Star3D创建3D五角星
Cross3D创建3D十字形
IcoSphere创建由一致的三角形网格组成的球体
Sphere创建球体
Spheres创建大量的球体
Earth创建表示地球的带纹理的网格
Ellipsoid创建3D椭圆体
Grid均匀或不均匀的2D格子
TessellatedBox创建多个四元组构成的立方体网格
Plane创建平面
Box创建指定大小的框
Cube创建立方体
Spring创建弹簧模型
Cylinder指定高度和半径,创建圆柱体
Cone指定高度和半径,创建圆锥体
Pyramid创建椎体
Torus创建圆环
Paraboloid创建抛物线体
Hyperboloid创建双曲线体
TextBase文本的基类,不可实例化
Text3D创建表示文本的3D多边形网格
Text2D创建2D文本
CornerAnnotation使用2D文本在窗口角落加注释
Latex渲染Latex文本和公式
Glyph网格之间的公共顶点定义为glyph,可以控制其方向和颜色
Tensors张量,其几何学表示在一个区域或一组点上定义
ParametricShape用于演示的内置图形集
ConvexHull由点集创建2D或3D的凸面包
VedoLogo创建3D的vedo图标

volume 使用体素

类或方法说明
Volume使用体素数据集

grids 四面体网格

类或方法说明
UnstructuredGrid对vtk的UnstructuredGrid对象的支持
TetMesh描述四面体网格的类
RectilinearGrid创建直线网格的数据集,其中的边都平行于坐标轴
StructuredGrid创建结构化网格的数据集,其中的边不需要和坐标轴平行

image 普通2D图片

类或方法说明
Image用于在3D场景展示2D图片的类

assembly 图形对象组合

类或方法说明
Group创建包含通用对象组
Assembly组合多个对象,将其视为单个的新对象
procrustes_alignment使用procrustes算法对齐若干网格对象,放在Assembly中返回

pyplot 高级绘制功能

类或方法说明
Figure图形的格式化类
Histogram1D1D直方图
Histogram2D2D直方图
PlotXY在x和y坐标系进行绘制的图形类
PlotBars绘制柱状图的图形类
plot绘制2D的线图或点图,变量x对应变量y
histogram根据1D和2D数组生成直方图
fit带有参数误差和误差带的多项式拟合。支持x和y的误差带。
pie_chart圆环图或饼图
violin小提琴图
whisker从一维数据集创建箱形图中间的条带
streamplot生成矢量场域的流线图
matrix生成矩阵,或一个带标签的2D颜色编码图
DirectedGraph有向图。由节点和连接节点的边组成的图,节点不需要位置信息,其位置只由相互之间的联系决定。

core 为不同的vedo对象提供功能的基类

类或方法说明
DataArrayHelper仅内部使用。协助类管理与点、面相关的数据
CommonAlgorithms公共方法
PointAlgorithms点云的方法
VolumeAlgorithms立体对象的方法

transformations 线性或非线性变换

类或方法说明
LinearTransform线性变换
NonLinearTransform非线性变换
TransformInterpolator在线性变换之间插值
spher2cart球形坐标转换为笛卡尔坐标
cart2spher笛卡尔坐标转换为球形坐标
cart2cyl笛卡尔坐标转换为圆柱坐标
cyl2cart圆柱坐标转换为笛卡尔坐标
cyl2spher圆柱坐标转换为球形坐标
spher2cyl球形坐标转换为圆柱坐标
cart2pol笛卡尔坐标转换为极坐标
pol2cart极坐标转换为笛卡尔坐标

笛卡尔坐标系是直角坐标系和斜坐标系的统称。

2.3 附加功能和配置

addons 添加附带的轴、图例、光源等

类或方法说明
ScalarBar2D标度条
ScalarBar3D3D标度条
Slider2D2D滑块
Slider3D3D滑块
Icon添加图标网格
LegendBox2D图例框
Light光源
Axes自定义轴
RendererFrame渲染框线
Ruler2D2D标尺
Ruler3D3D标尺
RulerAxes标尺轴
DistanceTool测距工具
DrawingWidget
SplineTool
曲线工具
Goniometer角度计
ButtonWidget Button按钮
Flagpost描述性标记
ProgressBarWidget进度条
BoxCutter立方体切割控件
PlaneCutter平面切割控件
SphereCutter球体切割控件

applications 可交互的功能

类或方法说明
Browser通过一个滑块查看一系列的vedo对象
IsosurfaceBrowser生成由滑块控制的体积等值面
FreeHandCutPlotter编辑网格的工具
RayCastPlotter使用光线投射做立体渲染
Slicer2DPlotter面向相机的一个切片,可以任意朝向
Slicer3DPlotter创建带有切面的渲染窗口
Slicer3DTwinPlotter创建两个并行的带有3D切片器的立体图形
MorphPlotter带有3个渲染窗口的绘制器,分别表示源、目标和扭曲的网格
SplinePlotter可以交互式的画曲线的绘制器
AnimationPlayer带有播放/暂停、快进/后退和滑块功能的绘制器

file_io 读入和导出

类或方法说明
load从文件或链接导入vedo对象
read从文件读取vedo对象
download从URL检索对象,存到本地,返回本地路径
gunzip解压.gz文件到临时文件,返回临时文件的路径
loadStructuredPoints从文件导入vtkStructuredPoints对象
loadStructuredGrid从文件导入vtkStructuredGrid对象
write将对象存到文件。支持的文件格式:vtk、vti、ply、obj、stl、byu、vtp、vti、mhd、xyz、xml、tif、png、bmp
save将对象存到文件
export_window把渲染场景导出到HTML、X3D或Numpy文件
import_window从Numpy的NPZ文件导入整个场景
load_obj从OBJ文件导入网格对象集
screenshot保存当前渲染窗口的截图
ask在命令行问问题,返回字符串格式的回答。
Video从某个渲染窗口生成视频

utils 公用工具

类或方法说明
OperationNode用于跟踪操作
ProgressBar在终端打印进度条的类
progressbar在终端打印进度条的方法
Minimizer使用Nelder-Mead算法的函数最小值查找器
geometry使用vtkGeometryFilter
用于从任意类型的数据集中提取几何图形
is_sequence检查输入对象是否可迭代
lin_interpolaterangeX范围内的变量x线性插入rangeY范围
vector返回表示向量的3D numpy数组
mag获取向量或向量组的长度
mag2获取向量或向量组长度的平方
versor返回单位向量
precision返回以指定精度表示的值的字符串
round_to_digit把实数舍入到指定有效位数
point_in_triangle判断一个点是否在另外三个点组成的三角形内
point_line_distance计算一个点到另外两个点连线的距离
closest返回给定的点和点集中距离最近的点
grep过滤文件中以特定标志开头的行
make_bands把列表中的值分到等值的波段中。
pack_spheres把球体打包到边界框中
humansort以人更期望的方式对列表进行排序,就地修改原列表
print_histogram在终端打印直方图
print_inheritance_tree打印类的继承树
camera_from_quaternion定义带有特定方向的vtkCamera
camera_from_neuroglancer从neuroglancer状态字典定义vtkCamera
camera_from_dict从字典定义vtkCamera
camera_to_dictvtkCamera转为字典
oriented_camera生成指向特定方向的vtkCamera对象,有确定的顶部方向,设置回退。
vedo2trimeshvedo.mesh.Mesh对象转为Trimesh.Mesh对象
trimesh2vedoTrimesh.Mesh对象转为vedo.mesh.Meshvedo.Assembly对象
vedo2meshlabvedo.mesh.Mesh对象转为Meshlab对象
meshlab2vedo把Meshlab对象转为vedo.mesh.Mesh对象
vedo2open3dvedo.mesh.Mesh对象转为open3d.geometry.TriangleMesh格式
open3d2vedoopen3d.geometry.TriangleMesh转为vedo.mesh.Mesh对象
vtk2numpyvtkDataArrayvtkIdListvtTransform转为numpy数组
numpy2vtk把numpy数组转为vtkDataArray
get_uv由平面上的点x和它对应的uv坐标,求平面上另一点p的UV纹理坐标
andrews_curves计算给定数据的Andrews曲线。

interactor_modes 自定义交互模式

类或方法说明
MousePan通过拖动鼠标,移动拍摄场景
FlyOverSurface浏览某个切面
BlenderStyle使用Blender默认的按键绑定创建交互模式

setting 改变全局行为和风格的设置

类或方法说明
Settings全局行为和风格的一般设置

3. 模块类的继承关系

3.1 core、visual、volume

volume
visual
core
Volume
VolumeVisual
PointsVisual
ImageVisual
CommonVisual
MeshVisual
Actor2D
PointAlgorithms
VolumeAlgorithms
CommonAlgorithms

3.2 grids

grids
TetMesh
UnstructuredGrid
RectilinearGrid
StructuredGrid
core.PointAlgorithms

visual.MeshVisual

3.3 pointcloud

pointcloud
CellCenters
Points
visual.PointsVisual

core.PointAlgorithms

3.4 mesh

mesh
Mesh
visual.MeshVisual

pointcloud.Points

3.5 shapes

shapes
Arc
Arrow
Arrow2D
Brace
ConvexHull
Cross3D
Cylinder
DashedLine
Disc
Earth
Ellipsoid
Grid
Hyperboloid
IcoSphere
Lines
NormalLines
Paraboloid
ParametricShape
Plane
Rectangle
RoundedLine
Sphere
Spheres
Spring
Star
Star3D
Tensors
TessellatedBox
Torus
Triangle
Tube
Tubes
Cube
Box
Pyramid
Cone
Arrows
Arrows2D
Glyph
Bezier
CSpline
KSpline
Spline
Line
Circle
GeoCircle
Polygon
FlatArrow
Ribbon
CornerAnnotation
Text3D
TextBase
Text2D
mesh.Mesh
visual.Actor2D

3.6 assembly

assembly
Assembly
Group
visual.CommonVisual

3.7 addons

addons
SplineTool
Button
LegendBox
Slider2D
Slider3D
BoxCutter
DrawingWidget
Icon
PlaneCutter
SphereCutter
DistanceTool
RendererFrame
Ruler2D
ProgressBarWidget
Flagpost
ButtonWidget
assembly.Group
shapes.Text2D
shapes.TextBase

3.8 applications

applications
plotter
Browser
IsosurfaceBrowser
FreeHandCutPlotter
RayCastPlotter
Slicer2DPlotter
Slicer3DPlotter
Slicer3DTwinPlotter
MorphPlotter
SplinePlotter
AnimationPlayer
Plotter

相关文章:

Python的3D可视化库 - vedo (1)简介和模块功能概览

文章目录 1. vedo和它支持的功能简介1.1 安装vedo1.2 命令行接口1.3 导出3D文件1.4 文件格式转换 2. vedo模块功能概览2.1 绘制和渲染visual 管理可视化、对象及其属性的显示的基类plotter 3D渲染colors 定义和显示颜色dolfin FEniCS/Dolfin库的支持 2.2 图形数据管理mesh 多边…...

全面解析:HTML页面的加载全过程(一)--输入URL地址,与服务器建立连接

用户输入URL地址,与服务器建立连接 用户在浏览器地址栏输入一个URL 浏览器开始执行以下三步操作操作:url解析、DNS查询、TCP连接 第一步:URL解析 什么是URL? URL(Uniform Resource Locator,统一资源定位符)是互联网…...

elasticsearch的倒排索引是什么?

大家好,我是锋哥。今天分享关于【elasticsearch的倒排索引是什么?】面试题。希望对大家有帮助; elasticsearch的倒排索引是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 倒排索引(Inverted Index&a…...

Ubuntu VNC Session启动chromium和firefox报错

问题描述 VNC客户端连接到Ubuntu Server后,启动chromium和firefox时报错: $ chromium [348564:348564:1117/102143.085649:ERROR:ozone_platform_x11.cc(244)] Missing X server or $DISPLAY [348564:348564:1117/102143.085732:ERROR:env.cc(258)] Th…...

【Tealscale + Headscale + 自建服务器】异地组网笔记

文章目录 效果为什么要用 Headscale云服务器安装 Headscale配置 config.yaml创建反向代理搭建管理 UI授权管理 UI添加互联设备参考 效果 首先是连接情况,双端都连接上自建的 Headscale, 手机使用移动流量,测试一下 ping 值 再试试进入游戏 可…...

C++ 编程基础(8)模版 | 8.2、函数模版

文章目录 一、函数模版1、声明与定义2、模版参数3、模板的实例化3.1、隐式实例化3.2、显示实例化 4、模版的特化5、注意事项6、总结 前言: C 函数模板是一种强大的特性,它允许程序员编写与类型无关的代码。通过使用模板,函数或类可以处理不同…...

Android Studio音频视频播放器课程设计

这个项目适合刚刚学习Android studio的初学者,实现音视频的基本播放功能,各项功能的页面都做的比较简单,特别适用于初学者,其特点在于本项目抛开了各种花里胡哨的制作,以最接近初学者的样式画面呈现,完全不…...

速盾:CDN是否支持屏蔽IP?

CDN(内容分发网络)是一种用于提高网站性能和可靠性的技术,通过将内容分发到距离终端用户更近的节点,减少了数据传输的延迟并提高了用户体验。在CDN中,屏蔽IP是一项重要的功能,可以帮助网站屏蔽无效或恶意请…...

机器学习—学习曲线

学习曲线是帮助理解学习算法如何工作的一种方法,作为它所拥有的经验的函数。 绘制一个符合二阶模型的学习曲线,多项式或二次函数,画出交叉验证错误Jcv,以及Jtrain训练错误,所以在这个曲线中,横轴将是Mtrai…...

在 macOS 和 Linux 中,波浪号 `~`的区别

文章目录 1、在 macOS 和 Linux 中,波浪号 ~macOS示例 Linux示例 区别总结其他注意事项示例macOSLinux 结论 2、root 用户的主目录通常是 /root解释示例切换用户使用 su 命令使用 sudo 命令 验证当前用户总结 1、在 macOS 和 Linux 中,波浪号 ~ 在 macO…...

【Java】实战:多数元素

一、题目描述 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出&#x…...

一文解决Latex中的eps报错eps-converted-to.pdf not found: using draft setting.

在使用Vscode配的PDFLatex编译IEEE TII的Latex模板时,出现eps文件不能转换为pdf错误,看了几十篇方法都没用,自己研究了半天终于可以正常运行了。主要原因还是Settings.JSON中的PDFLatex模块缺少:"--shell-escape", 命令…...

计算光纤色散带来的相位移动 matlab

需要注意的地方 1.以下内容纯属个人理解,很有可能不准确,请大家仅做参考 2.光速不要直接用3e8 m/s,需要用精确的2.9979.... 3.光的频率无论在真空还是光纤(介质)都是不变的,是固有属性,但是波长lambdac/f在不同的介…...

国内docker pull拉取镜像的解决方法

访问网站,查找该网站上可用的镜像源,然后替换掉下面代码中的hub-mirror.c.163.com: docker pull hub-mirror.c.163.com/library/nginx:latest 另外,进入到镜像之后,可以使用下面的命令查看操作系统版本。 lsb_releas…...

“Kafka面试攻略:核心问题与高效回答”

1,生产者发送消息的原理 发送消息的过程中,涉及到两个线程,main线程和sender线程,main线程会创建一个双端队列,main线程向双端队列发送消息,sender线程从双端队列里拉取消息,发送给Kafka Broke…...

C++ 多线程std::thread以及条件变量和互斥量的使用

前言 本文章主要介绍C11语法中std::thread的使用,以及条件变量和互斥量的使用。 std::thread介绍 构造函数 std::thread 有4个构造函数 // 默认构造函,构造一个线程对象,在这个线程中不执行任何处理动作 thread() noexcept;// 移动构造函…...

新华三H3CNE网络工程师认证—子接口技术

子接口(subinterface)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。在VLAN虚拟局域网中,通常是一个物理接口对应一个 VLAN。在多个 VLAN 的网络上,无法使用单台路由器的一个物理接口…...

【MySQL】InnoDB内存结构

目录 InnoDB内存结构 主要组成 缓冲池 缓冲池的作用 缓冲池的结构 缓冲池中页与页之间连接方式分析 缓冲池如何组织数据 控制块初始化 页面初始化 缓冲池中页的管理 缓冲区淘汰策略 查看缓冲池信息 总结 变更缓冲区-Chang Buffer 变更缓冲区的作用 主要配置选项…...

基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)

#1024程序员节|征文# 博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老…...

蓝桥杯每日真题 - 第19天

题目:(费用报销) 题目描述(13届 C&C B组F题) 解题思路: 1. 问题抽象 本问题可以看作一个限制条件较多的优化问题,核心是如何在金额和时间约束下选择最优方案: 动态规划是理想…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...