openVolumeMesh example 程序学习
简介
参考链接
openVolumeMesh 官网链接
https://www.graphics.rwth-aachen.de/software/openvolumemesh/download/
中国科技大学 - Volumetric Mesh Framework
http://staff.ustc.edu.cn/~fuxm/code/index.html
code
// C++ includes
#include <iostream>
#include <vector>
// Include vector classes
#include <OpenVolumeMesh/Geometry/VectorT.hh>
// Include polyhedral mesh kernel
#include <OpenVolumeMesh/Mesh/PolyhedralMesh.hh>
#include <OpenVolumeMesh/FileManager/FileManager.hh>
// Make some typedefs to facilitate(使...容易) your life
typedef OpenVolumeMesh::Geometry::Vec3f Vec3f;// 顶点的结构体
typedef OpenVolumeMesh::GeometryKernel<Vec3f> PolyhedralMeshV3f; // 体的定义
int main(int _argc, char** _argv) {
// Create mesh object
PolyhedralMeshV3f myMesh;
// Add eight(可能作者想生成一个体但是并没有,生成了一个四棱锥) vertices
OpenVolumeMesh::VertexHandle v0 = myMesh.add_vertex(Vec3f(-1.0, 0.0, 0.0));
OpenVolumeMesh::VertexHandle v1 = myMesh.add_vertex(Vec3f( 0.0, 0.0, 1.0));
OpenVolumeMesh::VertexHandle v2 = myMesh.add_vertex(Vec3f( 1.0, 0.0, 0.0));
//OpenVolumeMesh::VertexHandle v3 = myMesh.add_vertex(Vec3f( 0.0, 0.0,-1.0));
OpenVolumeMesh::VertexHandle v4 = myMesh.add_vertex(Vec3f( 0.0, 1.0, 0.0));
std::vector<OpenVolumeMesh::VertexHandle> vertices;
// Add faces
vertices.push_back(v0); vertices.push_back(v1);vertices.push_back(v4);
OpenVolumeMesh::FaceHandle f0 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v1); vertices.push_back(v2);vertices.push_back(v4);
OpenVolumeMesh::FaceHandle f1 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v0); vertices.push_back(v1);vertices.push_back(v2);
OpenVolumeMesh::FaceHandle f2 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v0); vertices.push_back(v4);vertices.push_back(v2);
OpenVolumeMesh::FaceHandle f3 = myMesh.add_face(vertices);
//vertices.clear();
//vertices.push_back(v0); vertices.push_back(v4);vertices.push_back(v3);
//OpenVolumeMesh::FaceHandle f4 = myMesh.add_face(vertices);
//
//vertices.clear();
//vertices.push_back(v2); vertices.push_back(v3);vertices.push_back(v4);
//OpenVolumeMesh::FaceHandle f5 = myMesh.add_face(vertices);
//
//vertices.clear();
//vertices.push_back(v0); vertices.push_back(v2);vertices.push_back(v3);
//OpenVolumeMesh::FaceHandle f6 = myMesh.add_face(vertices);
std::vector<OpenVolumeMesh::HalfFaceHandle> halffaces;
// Add first tetrahedron
halffaces.push_back(myMesh.halfface_handle(f0, 1));
halffaces.push_back(myMesh.halfface_handle(f1, 1));
halffaces.push_back(myMesh.halfface_handle(f2, 0));
halffaces.push_back(myMesh.halfface_handle(f3, 1));
myMesh.add_cell(halffaces);
// Add second tetrahedron
//halffaces.clear();
//halffaces.push_back(myMesh.halfface_handle(f4, 1));
//halffaces.push_back(myMesh.halfface_handle(f5, 1));
//halffaces.push_back(myMesh.halfface_handle(f3, 0));
//halffaces.push_back(myMesh.halfface_handle(f6, 0));
//myMesh.add_cell(halffaces);
// Print positions of vertices to std out
for(OpenVolumeMesh::VertexIter v_it = myMesh.vertices_begin();
v_it != myMesh.vertices_end(); ++v_it) {
std::cout << "Position of vertex " << v_it->idx() << ": " <<
myMesh.vertex(*v_it) << std::endl;
}
OpenVolumeMesh::IO::FileManager fileManager;
fileManager.writeFile("test.ovm", myMesh);
// save_mesh_graph("test.ovm", myMesh);
return 0;
}
TIPS
经过简单的修改,生成了一个四面体,原本有两个四面体,如果自己做验证的话会不清晰。
文件还算清晰
- 首先生成点
- 根据点的索引生成面
- 根据面的索引生成cell(小块)
image

ovm文件
OVM ASCII
Vertices
4
-1 0 0
0 0 1
1 0 0
0 1 0
Edges
6
0 1
1 3
3 0
1 2
2 3
2 0
Faces
4
3 0 2 4
3 6 8 3
3 0 6 10
3 5 9 10
Polyhedra
1
4 1 3 4 7
自问自答
QU: myMesh.halfface_handle(fx, 1) 第二个参数有的是1 有的是0 是什么意思??
AN:猜测使用右手螺旋定则,得到法向量,也就是面的朝向。
QU: ovm 文件生成的规则是什么?
AN: (*゜Д゜)σ凸←自爆按钮 还不知道呢? 网上也没有文件说明,除非看代码。本人又菜... 如果有人知道请告诉我
openVolumeMesh example 程序学习的更多相关文章
- 通过反汇编C语言小程序学习Liunx汇编语言
大家好! 我是来自山东师范大学的吴乐. 今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- 微信小程序 学习资料
微信小程序 学习资料 资料名称 网址 官方教程 https://developers.weixin.qq.com/miniprogram/dev/index.html?t=18110517
- Tuxedo安装、配置、以及演示样例程序 (学习网址)
Tuxedo安装.配置.以及演示样例程序 (学习网址): 1.http://liu9403.iteye.com/blog/1415684 2.http://www.cnblogs.com/fnng/a ...
- Java开发桌面程序学习(一)——JavaFx+Jfoenix初始以及搭建
Java开发桌面程序学习(一)--JavaFx+Jfoenix初始以及搭建 前言 想做一个Java的桌面程序,但是,使用原生的Swing感觉又十分麻烦,那个布局都是拿代码设置,看着十分的乱,偶然的情况 ...
- 【微信小程序学习笔记】入门与了解
[微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- 微信小程序学习笔记一 小程序介绍 & 前置知识
微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...
- 【C#】1.3 WPF应用程序学习要点
分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版) ...
- 微信小程序学习
官方网站 https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 项目结构介绍 -- MINA框架 https://mp.weixin.qq.com/ ...
- ios 程序学习
马上着手开发iOS应用程序:五.提交应用与寻找信息 2013-01-11 15:36 佚名 apple.com 我要评论(0) 字号:T | T 本文介绍了您已经学习完如何开发一个优秀的iOS应用之后 ...
随机推荐
- Tryhackme部分翻译学习
Tryhackme部分翻译学习 1.Weaponization WSH 上传txt到桌面 Set shell = WScript.CreateObject("Wscript.Shell&qu ...
- 有的时候,会遇到DataGrid里面嵌套DataGrid(重叠嵌套),然后里面的鼠标滚轮无法响应外面的滚动,为此记录下解决方案
有的时候,会遇到DataGrid里面嵌套DataGrid(重叠嵌套),然后里面的鼠标滚轮无法响应外面的滚动,为此记录下解决方案 本实例是在DataGrid的详情行里再嵌入一个DataGrid,模拟重叠 ...
- .NET CORE API接口的分组、版本管理
参照: Asp.net Core的Swagger接口根据模块.版本分组 (bbsmax.com)
- 【笔记】Python3|使用 PyVis 完成神经网络数据集的可视化
文章目录 版本: 应用实例: 1 神经网络可视化 2 别人的示例和代码 PyVis的应用: 零.官方教程 一.初始化画布`Network` 二.添加结点 添加单个结点`add_node`: 添加一系列 ...
- Notepad++之"常用技术"
一.^ 前面 数据准备 二.$ 后面 准备 结果
- CUDA原子操作
这节主要涉及到一个多线程情况下存在的数据竞争问题 -- 多个线程同时访问共享数据时,由于没有正确的同步机制,导致数据出现不一致的情况. C/C++ 多线程中,可以通过互斥锁(mutex).原子操作(a ...
- Vue-lazyload实现图片懒加载
前端多半是和页面打交道,我们在进行页面的展示的时候,对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载,等到滚动到可视区域后再去加载.即需要使用到 ...
- STM32在使用Clion平台开发时调试失败 SystemClock_Config 返回 HAL_ERROR
问题记录 在尝试使用Clion在STM32平台上开发调试时,需要通过OpenOCD结合ST-Link等调试器进行烧录和调试.但通过STM32CubeMX生成代码后,发现出现以下现象: 程序能够正常编译 ...
- Mysql索引为什么要采用B+Tree而非B-Tree
B+树非叶子节点不存储数据只存储索引,B树非叶子节点存储数据. B+树查询效率更高.B+树使用双向链表串连所有叶子节点,区间查询效率更高(因为所有数据都在B+树的叶子节点,扫描数据库 只需 ...
- 算法新手村 Day01
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 前言: 算法 算法的分类 几个排序算法 0.两值交换 1.选择排序 动图 思路 代码 2.冒泡排序 动图 思路 代码 3.插入排序 动图 思路 ...