图形几何之美系列:三维实体结构表达

 图形几何库提供丰富的几何工具算法,如基础的仿射变换、向量运算、关系计算及高阶的布尔运算、网格剖分、实体造型、曲线曲面等,这离不开基础的三维实体结构表达,而三维实体结构表达的方式有多种,各具特点。

1.背景简述

    当前工业软件发展较快,数字化相关平台和软件百家争鸣,***云化***是当前工业软件热门的发展方向之一,而有关采用哪种方式进行实体结构表达似乎讨论非常多,如果不理解原理特点和应用框架逻辑,再多的讨论也可能不着要点。

2.介绍

    实体结构的表达由多种方式,如分解表示、构造表示**CSG**(Constructive Solid Geometry)、边界表示**BRep**(Boundary Representation)、网格表示等。

  • 常见的分解表示法有四叉树、八叉树、BSP树等方式。
  • CSG方式出现较早,后来出现了BRep普及比较快,现在大部分领先的几何内核(ACIS、PS、OCC等)采用BRep方式,有关两者的优缺点和适用场景比较的讨论已有很多,本文不再赘述。
  • 采用某种表达方式之后,如BRep方式,实体相关的计算大多也基于此结构进行。

   

图:BRep表达方式

  

图:CSG表达方式

图:网格表达方式

    不同的实体结构表达方式特点不同,在几何内核范畴内尤为关注,比如布尔运算的实现方案和实体结构表达方式密切相关,有CSG布尔运算、BRep布尔运算、网格布尔运算等多种方式;再比如关系判断也离不开实体结构表达方式,点/线/面/实体与实体关系等计算。实体结构表达是几何库基础数据结构表达的重要部分,也是几何库的基础。

图:BRep布尔运算

图:网格布尔运算

3.影响和关注

    ​图形几何库可以采用某种实体结构表达方式,然后结合和基于此方式实现各类几何工具算法,对外提供能力,支撑诸如CAD/CAE/CAM等相关领域平台和产品的开发,似乎这种方式的选择带来的影响被封装在了图形几何库层面?      

    ​为了便于应用,一般需要在平台层对图形几何库接口进行封装和应用实现,提供便于使用的接口,支撑应用侧的开发,这样应用侧不必过多的关注底层的基础概念和算法。

3.1 减少对应用侧的影响:提供模块化的能力

    平台层一般会封装不便于理解的实体结构表达,以参数化数据结构的方式,比如立方体具有长宽高(Length/Width/Height)参数,而圆具有圆心(Center)和半径(Radius)参数。

如下面封装接口,

bool CreateCube(double length, double width, double height, Body& cube);

图:实体结构表达方式在几何库应用体系中的位置

3.2 应用开发仍需关注

    值得注意的是这并不意味着平台和应用层不关系实体结构表达方式,一些情况下需要获取这些数据结构(如拾取面),更重要的是根据需求场景特点进行几何库的选用,作为几何库重要基础,实体结构表达方式仍然是重要考虑的方面,毕竟在关注轻量级使用的场景,没有多少人愿意在CSG方式的基础上进行几何计算。

4.写在后面

图形几何、数据处理、并行计算相关研究和研发,公众号:geometrylib,欢迎交流。

 

_________哈市雪花__________

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

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

相关文章

华为OD机试真题(Python/JS/C/C++)- 考点 - 细节

华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。

CTFshow之信息收集第1关到10关。详细讲解

得而不惜就该死! --章总 开始新的篇章! 零、目录 一、实验准备 1、ctf网站:ctf.show 2、工具:chrome浏览器、hackbar插件 3、burpsuite抓包工具 二、实验技巧 (一)F12摸奖 源码泄露 (二…

AI驱动的医疗创新:信息抽取与知识图谱在临床应用中的转变

一、思通数科平台支持多种输入格式,如电子病历、临床数据和医学文献等,并能将这些信息快速转换为结构化数据,包括自动360度不同角度的旋转识别,提升数据的可操作性和可检索性。通过我们的解决方案,医疗机构能够有效整合…

js | undefined vs null vs void 0

背景 你就说为啥吧&#x1f447; console.log(nullundefined,nullundefined); // true false console.log(null false,undefinedfalse) // fasle false console.log(0false,NaNfalse) // true falseconsole.log(0null,0<null); // false true console.log(0false,0<fa…

【YOLOv11[基础]】实例分割Seg | 导出ONNX模型 | ONN模型推理以及检测结果可视化 | python

本文将导出YOLO-Seg.pt模型对应的ONNX模型,并且使用ONNX模型推理以及结果的可视化。话不多说,先看看效果图吧!!! 目录 一 导出ONNX模型 二 推理及检测结果可视化 1 代码 2 效果图

qt QDataStream详解

1. 概述 QDataStream是Qt框架中的一个核心类&#xff0c;主要用于处理二进制数据的序列化和反序列化。它提供了高效、跨平台的方式&#xff0c;将C数据结构转化为字节流&#xff0c;便于在网络传输、持久化存储等场景下使用。QDataStream可以处理包括整数、浮点数、布尔值、字…

云专线优势有哪些?对接入网络有什么要求?

云专线是一种连接企业本地数据中心与云服务提供商之间的专用网络连接方式&#xff0c;具有以下优势&#xff1a; 高安全性&#xff1a;云专线提供了物理隔离的数据传输通道&#xff0c;减少了数据在公共互联网上传输时可能遭遇的安全风险。 低延迟&#xff1a;由于是直接连接&a…

使用python向钉钉群聊发送消息

使用python向钉钉群聊发送消息 一、在钉钉群中新建机器人二、使用代码发送消息 一、在钉钉群中新建机器人 在群设置中添加机器人 选择自定义 勾选对应的安全设置 完成后会展示webhook&#xff0c;将地址复制出来&#xff0c;并记录&#xff0c;后面会用到 二、使用代码发送消…

简单又便宜的实现电脑远程开机唤醒方法

现有的远程开机方案 1&#xff09;使用向日葵开机棒 缺点是比较贵一点&#xff0c;开机棒要一百多&#xff0c;而且查了评论发现挺多差评说不稳定&#xff0c;会有断联和无法唤醒的情况&#xff0c;而且设置也麻烦&#xff0c;还需要网卡支持WOL 2&#xff09;使用远程开机卡 …

Netty ByteBuf 分配 | 池化复用 、直接内存

Netty ByteBuf 分配 本文主要内容关于 ByteBuf 分配介绍&#xff0c;为了更好的理解本文&#xff0c;我们可以带着几个问题思考 在IO密集型业务场景下&#xff0c;可能涉及大量ByteBuf分配&#xff0c;这时我们需 要考虑会不会产生OOM会不会出现频繁GC会不会内存泄露 根据上…

推荐一款windows右键管理工具:ContextMenuManager

Windows右键菜单管理工具是一款可以为系统打造一个异常丰富的右键菜单组&#xff0c;能自定义添加右键菜单项和管理“发送到”及第三方程序添加的右键菜单项目。 主要功能 一个纯粹的Windows右键菜单管理程序 • 管理常见位置右键菜单、自定义添加右键菜单 • 启用或禁用文件…

#渗透测试#SRC漏洞挖掘#自动化脚本的编写01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

个人学习记录平台的

摘 要 随着互联网的不断发展&#xff0c;人们由Web 1.0以静态、单向阅读为主的只读式网络走向了以分享为内核的实时现代化网络&#xff0c;即Web 2.0时代逐渐向着Web 3.0迈进。 随着技术的不断更新迭代&#xff0c;互联网从业者也必须处于终身学习的状态&#xff0c;他们要不…

算法日记 14—16 day 二叉树

前两天没有更新&#xff0c;这次把之前的补上&#xff0c;大篇章。 直接冲&#xff01;&#xff01;&#xff01; 题目&#xff1a;找树坐下角的值 513. 找树左下角的值 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最…

第三十一章 Vue之路由(VueRouter)

目录 一、引言 1.1. 路由介绍 二、VueRouter 三、VueRouter的使用 3.1. 使用步骤&#xff08;52&#xff09; 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. Friend.vue 3.2.4. My.vue 3.2.5. Find.vue 一、引言 1.1. 路由介绍 Vue中路由就是路径和组件的映…

特朗普钦定的编程语言!

大家好&#xff0c;我是程序员面试刷题平台的鸭鸭&#xff01; 鸭鸭昨天一直关注美国大选&#xff0c;最终川普获胜&#xff01;然后就刷到了一个图&#xff1a; 看到上面这张图片了吗&#xff1f; 你没有看错&#xff0c;特朗普也开始关心起 Java 了&#xff01;Java 的迷弟…

day20:三剑客——awk基础

一&#xff0c;概述 AWK 是一种用于处理文本和数据的编程语言&#xff0c;特别擅长用于处理格式化文本文件。它通过将输入数据分成字段&#xff0c;逐行进行处理&#xff0c;广泛应用于数据分析、文本处理和系统管理中。 二&#xff0c;使用方式 命令模式&#xff08;重点&a…

如何优化 B2B 转化率?这些步骤你不可不知

企业怎么才能把上网逛的人变成潜在买家&#xff0c;再进一步变成真金白银的付费客户呢&#xff1f;这对营销团队来说&#xff0c;可是头等大事。特别是在B2B这行&#xff0c;提升转化率&#xff08;CRO&#xff09;不光是任务&#xff0c;更是让营销更高效、收入噌噌涨的秘密武…

CPU Study-Multi-Port Cache

参考来源&#xff1a;《超标量处理器设计》—— 姚永斌 关于Multi-Port Cache可以参考&#xff1a;https://compas.cs.stonybrook.edu/~nhonarmand/courses/sp16/cse502/slides/04-caches.pdf 为了实现每个周期执行多条load/store指令&#xff0c;Cache必须支持多端口。 True…

Linux-c TCP服务模型

1、TCP模型&#xff0c;服务端与客户端的搭建时序图 2、TCP模型&#xff0c;在创建阶段和通信阶段&#xff0c;对套接字的理解 2.1、tcp连接阶段 2.2、tcp通信状态 一个服务端与多个客户端的通信状态 TCP与UDP的对比 &#xff08;下图是笔者理解所画&#xff0c;可能也许有错…