随笔 - 942,  文章 - 0,  评论 - 37,  阅读 - 54万

简介

网格简化是图形学中的一项重要操作,可以加深对于图形学的理解

论文

Surface Simplification Using Quadric Error Metrics

实现步骤

算法思路:

  1. 计算每一个点的 Kp 矩阵

Kp=(a2abacadabb2bcbdacbcc2cdadbdcdd2)

2建立最小堆 使用 multiset 建立
3.迭代
a.移动顶点
b.删除顶点
c.增加面

TIPS

1.

Δ(v)=pplanes(v)(vp)(pv)=p planes (v)v(pp)v=v(p planes (v)Kp)v

上式 其实就是 Q 二次误差的计算方式

2.

v¯=[q11q12q13q14q12q22q23q24q13q23q33q340001]1[0001]

为什么这样可以得到 两个点之间 二次误差最小的点呢?

我的理解

因为vTKpv=Q假设Q是0那说明是不是误差最小呢?是的
那么

Kpv=0(vT)1=(0001)

Kp 正定那么

v=(0001)(Kp)1

3.

关于为啥二次误差有用

我的理解

vTp 表示的是一个顶点 带入 面的方程 ax + by + cz + d = Q Q就表示偏差 如果Q等于0那么就表示这个顶点就在面上,不会产生误差

4.

论文的启发点,其实就是利用了 ax + by + cz + d = Q 的性质,然后计算的快些,然后就可以简化发论文了,所以,发论文好难......

结果图片


是不是很有感jio???jojo

code

https://github.com/lishaohsuai/digital_geo/tree/master/Surface_Framework_VS2017

参考文献

https://www.cnblogs.com/shushen/p/5311828.html

posted on   HDU李少帅  阅读(1003)  评论(2编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2019-05-31 DXF 最简单的一个文件生成一个直线 (1)

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示