首页 > 其他分享 >网格简化-QEM 顶点二次度量的优化

网格简化-QEM 顶点二次度量的优化

时间:2024-11-19 14:21:35浏览次数:1  
标签:二次 折叠 QEM 网格 顶点 度量

QEM 顶点二次度量的优化

理论

QEM(Quadric Error Metrics,四元数误差度量)是一种常用的网格简化技术,它通过计算几何代价来评估边的简化。通过使用 QEM,您可以在简化过程中保留重要的几何特性。

边折叠的基本思想

在 QEM 中,边折叠的目的是将两个顶点合并成一个新顶点,以减少网格的复杂性。每条边都有一个代价(即误差度量),这个代价通常是基于如何保持网格特征的原始形状和细节。边的折叠会改变网格的几何结构,因此需要重新计算与其相关的度量。

计算二次度量

    1. 原始度量定义:
      QEM 为每个顶点维持一个四维度量矩阵(4x4 矩阵),用于表示折叠过程中对几何的误差。这一度量是从与每个顶点相邻的每个面导出的。

    2. 从面导出度量:
      对于每个面 FF,可以计算其四元数误差的二次形式:

      QF=NF⋅NFT⋅AFQF​=NF​⋅NFT​⋅AF​

      其中,NFNF​ 是面的法向量,AFAF​ 是面的面积,QFQF​ 是一个 4x4 矩阵。这一过程会为每个顶点累积所有相邻面 FF 的度量:

      Qv=∑F∈N(v)QFQv​=F∈N(v)∑​QF​

      其中 N(v)N(v) 是与顶点 vv 相邻的所有面。

    3. 边折叠的二次度量:
      在选择边折叠时,要计算通过折叠边 e=(v1,v2)e=(v1​,v2​) 后得到的新顶点 v′v′ 的误差:

      Qe=Qv1+Qv2Qe​=Qv1​​+Qv2​​

      对于给定的新顶点 v′v′,应计算其代价:

      Cost(v′)=v′TQev′Cost(v′)=v′TQe​v′

      这是一个关于新顶点位置的二次形式,您可以通过求导来找到使成本最小的 v′v′。

    4. 求解最小值:
      为了最小化代价,我们对 Cost(v′)Cost(v′) 进行求导并设置为零,得到:

      Qev′=0Qe​v′=0

      如果 QeQe​ 是非奇异的,可以求解出合并后的顶点 v′v′。

标签:二次,折叠,QEM,网格,顶点,度量
From: https://www.cnblogs.com/lovebay/p/18554757

相关文章

  • 实现简易计算器 网格布局 QT环境 纯代码C++实现
    问题:通过代码完成一个10以内加减法计算器。不需要自适应,界面固定360*350。"="按钮90*140,其它按钮90*70。参考样式#defineDEFULT_BUTTON_STYLE"\QPushButton{\color:#000000;\border:1pxsolid#AAAAAA;\border-radius:0;\background-color:#FFFFFF;......
  • Cesium 绘制更新网格数据
    一、源码importtype{Viewer,Primitive,Material}from"cesium";constcesiumUtils={viewer:<Viewer|null>null,rainPrimitive:<Primitive|null>null,interValIndex:0,playIndex:1,//播放材质索引isPlayIng:false,......
  • ICEMCFD网格划分基础教程
    (1)(2)ICEMCFD基础教程(一级水平)大小:5.4G声明:带案例文件,为英文视频教程。————————————————————————目录——————————————————————————————————————————————本课程涵盖的研讨会/案例包括课程1:NACA0012具......
  • [题解]P5687 [CSP-S2019 江西] 网格图
    P5687[CSP-S2019江西]网格图简单来说题目就是给定一个\(n\timesm\)的网格图,同行边权相同,同列边权相同,求该网格图的最小生成树。根据Kruskal算法的贪心思想,我们要优先选择权值尽可能小的行,并将这条边应用于尽可能多的列。列方向同理。为了保证最终生成树的连通性,我们显然要......
  • HyperWorks的四面体网格剖分
    HyperMesh向用户提供了若干种生成四面体网格的方法。标准四面体网格剖分(StandardTetramesh)基于一个已有的封闭壳单元包络而成的空间,在合理设置参数的基础上生成四面体网格。标准四面体网格剖分为用户提供了极强的四面体单元形态和质量控制功能。另一类四面体网格剖分技术称之为......
  • 253 网格
    //705网格.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/5/problem/253有一个n×m的网格,现在我们想用1×2的矩形铺满它,要求矩形只能横着铺或者竖着铺、矩形不能超出网格的边界并且不同的矩形之间不能相互覆盖。请......
  • HyperWorks使用六面体和三棱柱单元进行实体网格剖分
    本节将演示如何使用solidmap功能对一个复杂的几何实体进行网格剖分。剖分的思路是:首先对该实体进行适当的切割,以使其各个部分均处于mappable的状态;然后分别对各个子块进行solidmap剖分。事实上,针对同一个几何实体,可能有多种分块方案。究竟哪种方案能获得更高质量的网格,是......
  • 地球空间网格编码规则
    中国国家标准提出《地球空间网格编码规则》(GB/T40087-2021)是2021年4月30日实施的一项中华人民共和国国家标准外文名称:Geospatialgridencodingrule规定了地球空间网格剖分要求和编码方法。该标准适用于作为空间单元与空间信息组织的地球空间网格剖分和代码标识。   ......
  • HyperWorks实体网格划分
    实体网格剖分在HyperMesh中,使用SolidMap功能进行实体网格剖分。该面板如下图所示:图4-4SolidMap面板 Ø通过SolidMapPanel进行实体网格剖分:•通过主菜单栏选择3D页面>solidmap。•通过下拉式菜单选择Mesh>create>SolidMap。 ØSolidMap......
  • 鸿蒙进阶篇-网格布局 Grid/GridItem(二)
    hello大家好,这里是鸿蒙开天组,今天让我们来继续学习鸿蒙进阶篇-网格布局Grid/GridItem,上一篇博文我们已经学习了固定行列、合并行列和设置滚动,这一篇我们将继续学习Grid的用法,实现翻页滚动、自定义滚动条样式,并实现一个小案例。1.翻页滚动到这里就需要用到控制器对象了,核心步......