ovm 格式的 六面体网格 样例 正方体的生成程序和文件
简介
Hexahedron 六面体网格,基于 openVolumeMesh 格式的程序生成cube
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( 0.0, 0.0, 0.0));
OpenVolumeMesh::VertexHandle v1 = myMesh.add_vertex(Vec3f( 1.0, 0.0, 0.0));
OpenVolumeMesh::VertexHandle v2 = myMesh.add_vertex(Vec3f( 1.0, 1.0, 0.0));
OpenVolumeMesh::VertexHandle v3 = myMesh.add_vertex(Vec3f( 0.0, 1.0, 0.0));
OpenVolumeMesh::VertexHandle v4 = myMesh.add_vertex(Vec3f( 0.0, 0.0, 1.0));
OpenVolumeMesh::VertexHandle v5 = myMesh.add_vertex(Vec3f( 1.0, 0.0, 1.0));
OpenVolumeMesh::VertexHandle v6 = myMesh.add_vertex(Vec3f( 1.0, 1.0, 1.0));
OpenVolumeMesh::VertexHandle v7 = myMesh.add_vertex(Vec3f( 0.0, 1.0, 1.0));
std::vector<OpenVolumeMesh::VertexHandle> vertices;
// Add faces
vertices.push_back(v0); vertices.push_back(v3); vertices.push_back(v2); vertices.push_back(v1);
OpenVolumeMesh::FaceHandle f0 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v4); vertices.push_back(v5);vertices.push_back(v6); vertices.push_back(v7);
OpenVolumeMesh::FaceHandle f1 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v0); vertices.push_back(v1); vertices.push_back(v5); vertices.push_back(v4);
OpenVolumeMesh::FaceHandle f2 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v1); vertices.push_back(v2);vertices.push_back(v6); vertices.push_back(v5);
OpenVolumeMesh::FaceHandle f3 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v2); vertices.push_back(v3); vertices.push_back(v7); vertices.push_back(v6);
OpenVolumeMesh::FaceHandle f4 = myMesh.add_face(vertices);
vertices.clear();
vertices.push_back(v0); vertices.push_back(v4); vertices.push_back(v7); vertices.push_back(v3);
OpenVolumeMesh::FaceHandle f5 = myMesh.add_face(vertices);
std::vector<OpenVolumeMesh::HalfFaceHandle> halffaces;
// Add first Hexahedron
halffaces.push_back(myMesh.halfface_handle(f0, 1)); // 0 1 4 正面
halffaces.push_back(myMesh.halfface_handle(f1, 1)); // 1 2 4 正面
halffaces.push_back(myMesh.halfface_handle(f2, 1)); // 0 1 2 背面
halffaces.push_back(myMesh.halfface_handle(f3, 1)); // 0 4 2 底面
halffaces.push_back(myMesh.halfface_handle(f4, 1)); // 0 1 2 背面
halffaces.push_back(myMesh.halfface_handle(f5, 1)); // 0 4 2 底面
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("cube.ovm", myMesh);
return 0;
}
file
OVM ASCII
Vertices
8
0 0 0
1 0 0
1 1 0
0 1 0
0 0 1
1 0 1
1 1 1
0 1 1
Edges
12
0 3
3 2
2 1
1 0
4 5
5 6
6 7
7 4
1 5
4 0
2 6
3 7
Faces
6
4 0 2 4 6
4 8 10 12 14
4 7 16 9 18
4 5 20 11 17
4 3 22 13 21
4 19 15 23 1
Polyhedra
1
6 1 3 5 7 9 11
TIPS
-D INCLUDE_TEMPLATES
当在linux 下编译的时候记得带上这个参数 否则无法输出OVM文件
ovm 格式的 六面体网格 样例 正方体的生成程序和文件的更多相关文章
- 最简单的基于FFmpeg的移动端样例:Android HelloWorld
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- Java 8 时间日期库的20个使用演示样例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...
- Grunt经常使用插件及演示样例说明
下述给出了经常使用Grunt插件,并列举了部分插件演示样例: 插件名称 说明 Github地址 grunt-contrib-clean 清空文件和目录 https://github.com/grunt ...
- Linux crontab 命令格式与具体样例
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...
- Python 100个样例代码【爆肝整理 建议收藏】
本教程包括 62 个基础样例,12 个核心样例,26 个习惯用法.如果觉得还不错,欢迎转发.留言. 一. Python 基础 62 例 1 十转二 将十进制转换为二进制: >>> b ...
- java 覆盖hashCode()深入探讨 代码演示样例
java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...
- Hicharts弄个样例
前端的事情,但最好自己要了解一下,能作个最简单的东东出来... 样例,需要的时候,用用,就喟给它一样模板数据即可. PYTHON,把字典的键值和KEY值匹配成列表即可. $(function () { ...
- 在Ubuntu下构建Bullet以及执行Bullet的样例程序
在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...
- java cglib动态代理原理及样例
cglib动态代理: http://blog.csdn.net/xiaohai0504/article/details/6832990 一.原理 代理为控制要访问的目标对象提供了一种途径.当访问 ...
- 最简单的视音频播放演示样例4:Direct3D播放RGB(通过Texture)
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
随机推荐
- CF1546B题解
看了题面,一道简单的假交互题 题目传送门,另一个传送门 读好题目很重要 AquaMoon 有 nnn 个长度为 mmm 的字符串,其中 nnn 是奇数. 然后她选取 n−1n-1n−1 个字符串,将它 ...
- ElementUI默认样式修改
修改ElementUI 样式的几种方式 新建全局样式表 新建 global.css 文件,并在 main.js 中引入. global.css 文件一般都放在 src->assets 静态资源文 ...
- 【HUST】网安|编译原理实验|实验四攻略
[实验代码及报告地址:Gitee传送门](已关闭传送大门,原因是抄袭过多,如需参考,请直接看博客,虽然下一届内容会变了) 不擅长写报告昂,很多地方能省全省了. 助力来年编译原理加大难度!(hhh) M ...
- 遇到的错误之“Could not copy property 'repositoryId' from source to target; nested exception is java.lang.reflect.InvocationTargetException”
[ERROR][2023-09-03 21:54:10] | Combination收入费用数据导出异常 org.springframework.beans.FatalBeanException: C ...
- JavaScript 从零实现物理模拟
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- vivo 互联网研发效能关键技术与实践
作者: vivo 互联网研发效能团队 Yang Peng.Huang Fengjin 本文为2024年 vivo 开发者大会互联网技术专场分享内容之一,在公众号对话框回复[2024VDC]获取 202 ...
- 部署可使用GPU的tensorflow库
本文介绍在Anaconda环境中,配置可以用GPU运行的Python新版tensorflow库的方法. 在上一篇文章部署CPU与GPU通用的tensorflow:Anaconda环境中,我们详 ...
- AI对低代码技术的影响
一.开发效率革命的"双引擎" 在过去的数十年里,软件工程领域正在经历一场由低代码平台和人工智能技术共同驱动的效率革命.这两股技术浪潮虽源于不同的技术路径,却共同指向同一个战略目标: ...
- 如何在 .NET 中构建一个好用的动态查询生成器
前言 自从.NET Framework 3.5提供了LINQ之后,集合数据查询基本被LINQ统一了.这大幅提高了编写数据查询代码的效率和质量,但是在需要编写动态查询的时候反而很困难,特别是最常用的wh ...
- Vue获取钉钉免登陆授权码(vue中的回调函数实践)
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 1.背景 2.技术栈 3.需求 4.实现步骤 4.1 配合webpack安装对应的npm包 4.2 抽取获得code的js方法 4.3 在需要 ...