目录

  • openmesh例子程序的网格光顺算法

openmesh例子程序的网格光顺算法

算法参考:
几种网格平滑算法的实现

数学基础:
重心坐标
//给网格添加一个Point类型的cogs属性,用来保存每一个顶点的重心位置

//VPropHandleT字面上的理解就是顶点属性的句柄
OpenMesh::VPropHandleT<Mesh::Point> cogs;
src_mesh_->add_property(cogs);//给网格中每个点添加一个属性cogs

实现上cogs并不属于顶点,所以使用property的方法访问cogs,而不是使用句柄的方式,存储器重心信息到动态属性cogs中
意思就是不能直接通过*v_it访问这个重心,而是要通过property(cogs, v_it)将值传入到cog中,当前的cog是和当前迭代器指示的v_it对应的

//遍历cogs点的所有邻点
for (vv_it = src_mesh_->vv_iter(*v_it); vv_it.is_valid(); ++vv_it)
{src_mesh_->property(cogs, *v_it) += src_mesh_->point(*vv_it);++valence;
}
src_mesh_->property(cogs, *v_it) /= valence;

一些openmesh函数的使用

vectorize(0.0f);//应该是点的初始化
/*
Property management - get property value for an item
*/
template<typename T >
T & property (VPropHandleT< T > _ph, VertexHandle _vh)Get value for item represented by the handle.

具体的程序

//定义cogs,并给网格src中每一个点添加动态属性
OpenMesh::VPropHandleT<Mesh::Point> cogs;
src_mesh_->add_property(cogs);src_mesh_->property(cogs, *v_it);//是通过property()提取与*v_it相对应的重心坐标
set_point(*v_it, src_mesh_->property(cogs, *v_it));Mesh::VertexIter v_it;//顶点的迭代器
Mesh::VertexVertexIter vv_it;//与点有关的邻点的迭代器
Mesh::Point cog;
Mesh::Scalar valence;
unsigned int N(1);for (int i = 0; i < N; i++)
{for (v_it = src_mesh_->vertices_begin(); v_it != src_mesh_->vertices_end(); ++v_it){src_mesh_->property(cogs, *v_it).vectorize(0.0f);valence = 0.0;for (vv_it = src_mesh_->vv_iter(*v_it); vv_it.is_valid(); ++vv_it){src_mesh_->property(cogs, *v_it) += src_mesh_->point(*vv_it);++valence;}src_mesh_->property(cogs, *v_it) /= valence;}//更新顶点for (v_it = src_mesh_->vertices_begin(); v_it != src_mesh_->vertices_end(); ++v_it){if (!src_mesh_->is_boundary(*v_it)){src_mesh_->set_point(*v_it, src_mesh_->property(cogs, *v_it));}}
}

OpenMesh-网格光顺的算法相关推荐

  1. 基于网格的聚类算法STING

    基于网格的聚类算法STING STING方法简介 ① 全称 : STING , Statistical Information Grid , 统计信息网格 , 是一种 多分辨率聚类技术 ; ② 划分方 ...

  2. NLP之NBGBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva)、梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测)

    NLP之NB&GBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva).梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测) ...

  3. 网格布局之网格元素放置算法

    接下来的网格元素放置算法将网格元素的自动位置解析为确定位置,确保每个网格元素具有布局明确的网格区域.(Grid spans 不需要特别的解析:如果没有明确指定,默认是1) 注意:当显式网格中没有位置放 ...

  4. 【数据聚类】第五章第一节:基于网格的聚类算法概述

    pdf下载(密码:7281) 基于网格的聚类算法:主要用于处理大规模多维数据的聚类问题.它利用一个网格结构,将数据分布的空间划分为有限数目的单元,然后在这些网格单元上执行聚类操作.基于网格的聚类算法主 ...

  5. 基于高度图的三维地形生成算法入门篇 —— 均匀网格地形生成算法

    赵 刚 引言     在三维游戏等建立的虚拟世界中要求虚拟场景具有很高的逼真度,其中的三维地形逼真度是关键之一.然而三维地形的生成和绘制需要巨大的计算量,实景地形的生成还需要地形数据库的支持,在运算能 ...

  6. 网格平滑基础算法总结

    基于滤波的算法 拉普拉斯网格平滑算法 可 以 认 为 定 义 在 顶 点 上 的 信 息 是 一 个 信 号 流 f ( x , t ) , 这 个 信 号 会 随 时 间 扩 散 可以认为定义在顶点 ...

  7. 网格离散曲率算法(二次曲面拟合)

    方法引进 很多情况下离散网格计算曲率是必要的,在浙江大学方惠兰学姐的硕士论文网格曲面上离散曲率计算方法的比较与研究中,对各种不同计算网格曲率的方法做了总结,我这里是借鉴MATLAB论坛中的一篇D.Kr ...

  8. 面试题-基础-网格移动路径算法

    原题如上,题目求从左上角到右下角共有多少条路径.这个题目是比较特殊的例子.一般化的题目是从(0,0)点移动到(x,y)点共有多少种路径,不包含回路. 这道题是典型的递归算法问题,只要把原理想清楚了,其 ...

  9. 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺

    看这篇博文前,请先参考我的另外一篇博文<图形处理(三)简单拉普拉斯网格变形-Siggraph 2004>学习拉普拉斯坐标的相关理论知识.这里要分享的paper,是通过拉普拉斯的方法实现三角 ...

最新文章

  1. 柚子小姐,Happy Birthday
  2. windows 8 修改文件权限
  3. [15]APUE:pipe / FIFO
  4. 不吹牛,中国车主已经实现了「停车自由」
  5. UA MATH636 信息论7 并行高斯信道简介
  6. idea 中javax.servlet.http.HttpServlet包导不进来
  7. Java 日期与时间
  8. 想要换壁纸,看这个网站就够了!
  9. 是什么原因让你选择做程序员
  10. JS基础--子类型重写超类型方法原型链图解
  11. 如何管好下属(转载)
  12. linux5.4获取root权限,gcc++漏洞 普通用户获取root权限
  13. 不可见的unicode字符
  14. SQL数据库学习之路(一)
  15. Ubuntu开机后nvidia-smi英伟达驱动消失,或_解决更改内核无效的问题。
  16. 调用微信内置浏览器实现微信打开的网页上的图片能点击打开的效果
  17. Win PE 启动盘制作
  18. 【Ubuntu20安装aria2以及配置web端】
  19. 锂电池相关参数及其使用指导
  20. UVALive6578-Trending Topic

热门文章

  1. python代码计算字数_如何用python计算文件的字数
  2. person reid demo郑哲东 Deep ReID
  3. jupyter不是内部或外部命令,也不是可运行程序的解决方案
  4. spring听课一点+组成原理心得
  5. mac php7.2,MAC下更新自带的PHP版本到7.2
  6. 医疗器械软件开发哪些事(1)医疗器械软件开发不同之处
  7. 秒杀抢红包的思考和总结
  8. 北大学子求职经历与建议(IT类)
  9. CVE-2020-1472NetLogon权限提升漏洞
  10. 12306火车票助手