基于HalfEdge模型加面算法分析(2)

halfedge 结构 本学期的高级计算机图像学作业的一部分, 实现halfedge结构。 我用obj结构和halfedge互相转化来完成这样一件事。 halfedge.h: #ifndef HALFEDGE_VECTOR_H_ #define HALFEDGE_VECTOR_H_ #include using namespace std; #include typedef struct { 阅读详情

接上篇《基于HalfEdge模型加面算法分析(1)》

6.Connect next/previous halfedges

连接 半边指向下一半边  半边的前半边 的关系,这是最复杂的一步,有多种出现情况,下面我们分情况讨论:

 

情况1:Both edges are new

要连接的两边边都是新边

 

faceHalfedges[i].Opposite.Previous = faceHalfedges[j].Opposite;

faceHalfedges[j].Opposite.Next = faceHalfedges[i].Opposite;

 

情况2:This is new, next is old

当前边是新边,下一条不是新边,如图三角形1是已经构建过的了

faceHalfedges[i].Opposite.Previous = faceHalfedges[j].Previous;

faceHalfedges[j].Previous.Next = faceHalfedges[i].Opposite;

情况3: This is old, next is new

当前边是旧边,下一条是新边,如下图,三角形1是已经构建过的了

faceHalfedges[i].Next.Previous = faceHalfedges[j].Opposite;

faceHalfedges[j].Opposite.Next = faceHalfedges[i].Next;

情况4: Both edges are new and vertex has faces connected already

两条边都是新的且顶点已经有面连接了,如图三角形已经构建过了,对于中间的顶点来说已经连接了面1

Halfedge closeHalfedge = null;

 // Find the closing halfedge of the first available opening

foreach (Halfedge h in faceVertices[j].Halfedges)

 {

   if (h.Face == null)

  {

   closeHalfedge = h;

     break;

   }

   }

 Debug.Assert(closeHalfedge != null);

Halfedge openHalfedge = closeHalfedge.Previous;

 // Link new outer halfedges into this opening

faceHalfedges[i].Opposite.Previous = openHalfedge;

openHalfedge.Next = faceHalfedges[i].Opposite;

faceHalfedges[j].Opposite.Next = closeHalfedge;

closeHalfedge.Previous = faceHalfedges[j].Opposite;

三 新构建好的三角形面(半边数据)已经添加到模型中,渲染出来,加面算法完成

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HalfEdge实现1——Mesh的建立、查询相关操作、Mesh的读入与输出(Paraview可视化) 0.前言 本文将从HalfEdge简介、数据结构的定义、mesh的建立、顶点的顶点邻居查询、顶点的面邻居查询、边的邻居查询、网格数据结构的输入与输出、测试结果八个方面。因作者水平有限,文中难免会有错误之处,希望读者批评指正。 1.HalfEdge简介 HalfEdge(半边)是一种用于表示多边形网格(Polygon Mesh)的一种常用方法,它能够表示任意的多边形网格(必须是流形)。Half... 阅读详情

相关推荐

Houdini中的half-edge

参考: flipcode - 半边数据结构 Half Edge数据结构有什么优点? - 知乎 (zhihu.com) 概念 Half Edge结构即半边结构,是网格数据结构的其中一种表达方式,可在建模软件中储存多边形(另外两种用于储存多边形的数据结构是:Polygon Soup和incidence matrice,其中polygon的储存开销远小于其他两种),Half Edge是个有向图,把一条边表示成两个有向的半边(如图),由于Half Edege构造需要一定的开销,因此一般都用下图这种 .

qq_41835314的博客 2214

Opencascade源码学习之模型算法_建模算法介绍

Opencascade源码学习之模型算法_建模算法介绍

younggung的博客 5556

英飞凌AURIX™ Development Studio(ADS)工程调试与烧录实战指南

本文详细介绍了英飞凌AURIX™ Development Studio(ADS)的工程调试与烧录实战指南。从调试环境搭建、硬件连接到断点设置、变量监控等核心调试技巧,帮助开发者快速掌握ADS安装使用教程,提升多核处理器开发效率。

k8l9m0n的博客 574

基于HalfEdge模型加面算法分析(1)

声明:除了第一张图来自互联网,其他的图片都是使用VISIO和ISKITCH制作 一  先简单介绍一些HalfEdge数据结构       半边结构由三个对象组成:顶点、半边、面,每一个对象都有指针指向其他对象,大致指向情况如下: 1、顶点对象:包含一个指针指向离开它的半边vertex->leaving. 2、半边对象:包含一个指向它离开的顶点的指针halfedge->orgin。

Geek4IT的专栏 3082

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1079

从零开始:如何用大语言模型构建你的第一个路径规划智能体

本文详细介绍了如何利用大语言模型(LLM)构建路径规划智能体,从基础概念到实战案例,涵盖TSP和CVRP问题的解决方案。通过选择合适的LLM模型、设计有效的提示工程和实现自我验证,即使没有运筹学背景也能快速上手。文章还提供了部署与优化智能体的实用技巧,帮助读者在物流配送、机器人导航等领域应用这一技术。

weixin_28256233的博客 488

半边数据结构【Half Edge】

表示多边形网格的常用方法是共享顶点列表和存储其顶点索引的面列表。这种表示既方便又对于许多目的都是有效的,但是在某些领域它被证明是无效的。Half Edge就是解决网格中邻接元素查询的一种数据结构。

新缸中之脑 3645

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

本次安装实验基于苹果m2芯片的mac系统,使用vmware fusion搭建三台ubuntu24分布式虚拟机,确保在三台机器上安装了Java jdk8,并配置了免密码登录,网络互通,防火墙关闭,授时服务器已经同步。访问apche官网源,下载3.3.4版本,我们用二进制通用版即可,因为hadoop运行在java环境,跨平台性使得无需编译arm架构版本。至此,Hadoop的安装完成,包括hdfs文件存储系统,mapreduce计算框架,yarn资源管理系统均能正常、稳定使用。

qq_31412425的博客 2161

HalfEdge半边数据结构详解

我们可以将离散表面表示为多边形网格。多边形网格可以被认为是图(具有顶点和顶点之间的边)加上面列表,其中面是边的环。推荐: 使用快速搭建 3D场景。下面,我们将网格指定为顶点列表和面列表,其中每个面都指定为顶点环。网格的边是隐含的——边连接面的相邻顶点。由于不含冗余信息,面列表表示在磁盘存储中很受欢迎,但是很难编写直接在这种表示上运行的算法。例如,判断v6和v3是否连接,我们必须遍历面列表,直到找到(或找不到)我们正在寻找的边。

新缸中之脑 2985

从零开始:用LabVIEW和ModbusTCP协议,像搭积木一样连接Delta PLC

本文详细介绍了如何利用LabVIEW的图形化编程环境和ModbusTCP工业协议,快速连接Delta PLC实现数据通信。通过模块化配置和实战案例,指导读者无需编写复杂代码即可完成寄存器读取、多数据类型处理及系统监控,显著提升工业自动化项目的开发效率与部署速度。

n8m7b6v5c4的博客 697

从理论到实践:Zemax驱动下的离轴三反光学系统全流程构建

本文详细阐述了从理论推导到软件实现的离轴三反光学系统全流程设计方法。文章首先分析了离轴三反系统在空间遥感等领域的优势,然后手把手指导如何基于像差理论计算共轴三反的初始结构参数,包括曲率半径与圆锥系数。最后,重点介绍了在Zemax中完成从共轴建模、视场离轴设置到优化与性能评估的完整实战步骤,为光学工程师提供了宝贵的经验与避坑指南。

weixin_29205061的博客 239

网格半边结构(Half edge mesh)

网格半边结构(Half edge mesh) 1、网格的表示 在计算机图形学上,表达表面网格的数据结构有三种,分别是面列表( List of faces)、邻接矩阵(Adjacency matrix)、半边结构(Half-edge)。 面列表示例: 邻接矩阵示例: 半边结构示例: 2、网格分类 流形网格(manifold mesh) 非流形网格(non-manifold mesh) 如果网格的每个边最多被两个面片共用,那么这个网格就是流形网络,否则称为非流形网络。 非流形网络例子: 3、网格半边结

qq_21476953的博客 6558

【YOLOv10改进[Backbone]】使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发

使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发 + 遥遥领先

静谧、淡雅 2858

【OpenMesh】Halfedge数据结构

原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/mesh_hds.html 这一节描述了下列用于存储mesh实体,定点,边,面和连接信息的数据结构。 现在有很多种数据结构可以用来表示多边形网格。在这一节末引用的论文有详细的比较。 在这个项目中使用的数据结构叫做halfedge data structrue。face

u012735097的博客 2208

置顶必读(1) |《YOLOv11实战:从入门到深度优化》专栏导读,带你一文了解本专栏!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 12万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

The Halfedge Data Structure

这一节解释用于存储mesh的点,边和面以及它们的连接信息的数据结构。 有很多用于表示多面体mesh的数据结构。如果你想对它们进行比较,你可以查看在本节后面列举的papers。 在openmesh中使用的数据结构叫做halfedge数据结构。如果我们对于一条边进行分割(即连接A和B的一条边变成两个有向边,它们一条从A指向B,另一条相反)。下面的图展示了连接性是如何在这个结构中进行存储的: 每个顶点引出一条半边 即一条半边从这个顶点出发(1) 每个面指向圈住它的半边之一(2) 每个半边为下列的元素

weixin_38060850的博客 598

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

three HalfEdge 半边

原文链接:https://juejin.cn/post/7438269136357523519。

qq_66118130的博客 474

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Openmesh halfedge find vertex

placeholder 没有充分理解iterator 的妙处,还狂找halfedge 的dereference! halfedge connectivity. // --- halfedge connectivity --- VertexHandle to_vertex_handle(HalfedgeHandle _heh) const { return halfedge(_he

geometry_的专栏 2155

MeshEdit 1 - Halfedge Mesh 半边数据结构

对于一条边,它连接两个顶点 i 和 j。这条边的其中一条半边从 i 指向 j,另一条半边则从 j 指向 i。一般来说,标准的网格元素(顶点、边和面)只知道其中的一个半边。总之,我们可以得到以下关系:因此,半边可以把所有元素联系起来。例子一:打印出一个面 f 包含的所有顶点的位置 例子二:打印出一个给定的顶点包含的所有相邻顶点的位置 例子三:遍历半边网格中的所有顶点 需要注意:边是否为边界(boundary)...

JasmineCAicai的博客 763

CGAL::2D Arrangements-2

对象arr始终有一个unbounded face,通过arr.unbounded_face()可以拿到,空的Arrangement_2也有一个unbounded face。第个半边都有一个关联面(incident face),这个关联面在半边的左边,可以通过e->face()获取到。通过f->is_unboudned()可以确定一个face是否有边界,有边界的face有一个outer CCB。e->source()得到源点,e->target()得到目标点,e->twin()得到半边的对边,

daoxwj的专栏 1428

CGAL 5.6 - Halfedge Data Structures

半边数据结构(缩写为 HalfedgeDS,模板参数缩写为 HDS)是一种以边为中心的数据结构,能够维护顶点、边和面的入射信息,例如平面地图、多面体或其他嵌入任意维度的可定向二维曲面。每条边被分解成两个方向相反的半边。每个半边存储一个入射面和一个入射顶点。每个面和每个顶点都会存储一条入射半边。半边数据结构的简化变体可以省略其中一些信息,例如面中的半边指针或面的存储。半边数据结构是一种组合数据结构,几何解释是由建立在半边数据结构之上的类添加的。

叶 756

【OpenMesh】操作网格

介绍 在这篇指南中你会学到如何使用OpenMesh类库操纵网格。在之前的一章中(参考Mesh Iterators and Circulators),你已经学了如何迭代顶点,边,halfedge和面,以及循环遍历某些结构比如1-ring。所以这篇指南中我们将会关注如何高效的使用halfedge数据结构和其中有用的特性比如说边界标志(boundary flag)。我们假定你已经熟悉OpenMesh中

a503604的专栏 3718

Halfedge 数据结构 + Delaunay三角剖分之分治法(Divide and Conquer)

*声明:才疏学浅,希望各位大神多多指教 图片来源于网络,侵删。 Halfedge数据结构 最近在搞Delaunay三角剖分算法,没啥经验,在github看到一份代码(https://github.com/eloraiby/delaunay),其中用到了Halfedge的数据结构(即是Doubly connected edge list, DCEL数据结构。http...

无名小卒 3835

OpenMesh ~ ArrayItems

Openmesh  最基本的应该属于它的halfedge 结构。具体可以看一些理论的材料。这里: Halfedge theory 下面把Openmesh关于内部结构的代码贴出来: namespace OpenMesh { //== CLASS DEFINITION ========================================================= //

geometry_的专栏 1135
上一篇: 基于HalfEdge模型加面算法分析(1)
下一篇: Conversion to Dalvik format failed with error 1解决方
Geek4IT
博客等级 码龄14年 7粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值