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_->po