生成球 使用openMesh 库
简介
使用openmesh生成一个球,采用的是标准球坐标系。
// 生成球 n 最好输入偶数 10 或者 100
#include <iostream>
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
#include<cmath>
#define pi 3.1415926
using namespace std;
typedef OpenMesh::TriMesh_ArrayKernelT<> MyMesh;
int main()
{
MyMesh mesh;
int n,count=10000,k=-1;
cout << "n:";
cin >> n;
MyMesh::VertexHandle *vhandle = new MyMesh::VertexHandle[count];
std::vector<MyMesh::VertexHandle>face_vhandles;
for (int j =0;j < n;j++) {
double distance = cos(j*pi / n);// 原先是 sin
double r_circle = sin(j*pi / n);
for (int i = 0;i < n;i++) {
++k;
vhandle[k]=mesh.add_vertex(MyMesh::Point(r_circle*cos(2 * i*pi / n), r_circle*sin(2 * i*pi / n), distance));
// 对网格添加顶点
}
}
for (int i = 0;i < n-1;i++) {
for (int j = 0;j < n;j++) {
int topRight = i * n + j;
int topLeft = i * n + (j + 1) % n;
int bottomRight = (i + 1)*n + j;
int bottomLeft = (i + 1)*n + (j + 1) % n;
face_vhandles.clear();
face_vhandles.push_back(vhandle[bottomRight]);
face_vhandles.push_back(vhandle[bottomLeft]);
face_vhandles.push_back(vhandle[topRight]);
mesh.add_face(face_vhandles);
face_vhandles.clear();
face_vhandles.push_back(vhandle[bottomLeft]);
face_vhandles.push_back(vhandle[topLeft]);
face_vhandles.push_back(vhandle[topRight]);
mesh.add_face(face_vhandles);
}
}
//vhandle[k+1] = mesh.add_vertex(MyMesh::Point(0, 0, 1));
vhandle[k+1] = mesh.add_vertex(MyMesh::Point(0, 0, -1));
for (int i = 0;i < n;i++) {
//face_vhandles.clear();
//
//
//face_vhandles.push_back(vhandle[i]);
//face_vhandles.push_back(vhandle[(i + 1) % n]);
//face_vhandles.push_back(vhandle[k + 2]);
//mesh.add_face(face_vhandles);
face_vhandles.clear();
face_vhandles.push_back(vhandle[k- i]);
face_vhandles.push_back(vhandle[k - (i + 1) % n]);
face_vhandles.push_back(vhandle[k + 1]);
mesh.add_face(face_vhandles);
}
try
{
if (!OpenMesh::IO::write_mesh(mesh, "output5 .off")) {
std::cerr << "Cannot write mesh to file ' output5 .off ' " << std::endl;
return 1;
}
}
catch (std::exception&x) {
std::cerr << x.what() << std::endl;
return 1;
}
return 0;
}
生成球 使用openMesh 库的更多相关文章
- 生成lua的静态库.动态库.lua.exe和luac.exe
前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across me ...
- VS2013 生成sqlite3动态连接库及sqlite3.dll的调用
一,生成sqlite3动态连接库1,去sqlite官网上下载最近的sqlite源码包,解压后得到四个文件:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h此处还需要sq ...
- Android NDK生成及连接静态库与动态库
对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用.但是在某些情况下,我们需要借助C/C++来写JNI本地代码.比如,在使用跨平台的第三方库的时候:为了提升密集计算性能的时 ...
- 用NDK生成cURL和OpenSSL库
最近在用Qt开发Android应用时需要获取https页面内容,但Qt内置的QNetworkAccessManager类只支持下面这些协议(调用其supportedSchemes成员函数获取): (& ...
- Linux下Gcc生成和使用静态库和动态库详解(转)
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...
- Linux下Gcc生成和使用静态库和动态库详解
参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...
- Linux-Gcc生成和使用静态库和动态库详解
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...
- Qt5中生成和使用静态库
在QT中静态库的后缀名为.a,在vs中开发的静态库后缀名为.lib.QT版本为5.2.1,系统为Windows. 一. 静态库的生成 新建项目. 新建一个静态库的项目,如图1.1所示:项目名称为tes ...
- 【转】Linux下gcc生成和使用静态库和动态库详解
一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...
- 二维码生成:使用 JavaScript 库QRCode.js生成二维码
QRCode.js:跨浏览器的javascript二维码生成库,支持html5的Canvas画布,没有任何依赖. Github 地址:https://github.com/davidshimjs/qr ...
随机推荐
- app自动化设计
一.在pom.xml引入依赖 testng:测试框架用例管理 appium:需要用到appium log4j:日志集成 allure:生成报告 二.po分层 分为基础层,page层,用例层,xml文件 ...
- Gnirehtet —— 通过 USB 让手机共享 PC 网络
Gnirehtet 使用教程 什么是 Gnirehtet? Gnirehtet("Tethering" 反写)是 Google 开发的开源工具,用于 通过 USB 共享 PC 网络 ...
- jdbc写一个访问数据库的工具类
操作的工具类 package com.zjw.jdbc2; /** * jdbc操作的工具类 * @author Administrator * */ import java.sql.Connecti ...
- 【MOOC】华中科技大学操作系统慕课答案-期末测试题
文章目录 单选题 填空题 判断题 主观题 单选题 1 当操作系统处理缺页中断的时候,CPU处在 . A. 用户态 √B. 核态 C. 不确定的状态 D. 空闲状态 2 操作系统的用户界面可以分为两 ...
- 一站式搭建交友平台-交友系统源码-支持H5小程序+带安装说明+可封装APP-交友网站系统平台搭建
诺诺婚恋交友系统 1.系统基于TP6+Uni-app框架开发:客户移动端采用uni-app开发,管理后台TH6开发. 2.系统支持微信公众号端.微信小程序端.H5端.PC端多端账号同步,可快速打包生成 ...
- 从零到一:利用金仓社区数据,LoRa微调与Spring AI 构建私有化千问模型
上次我们在Coze平台上成功搭建了一个针对金仓问题的解决助手.这个智能体的核心工作流程相对简单:每次它通过HTTP接口调用插件,在金仓平台内部进行搜索,随后利用大模型的推理能力对查询结果进行分析,从而 ...
- 递归神经网络 RNN 原理(上)
前篇对于 RNN 前奏, 或者说是 NLP 的基础, 语言模型 (Language Model) 有了一点认识. LM 的应用场景为 在词库中, 搜索出 符合当前给定 句子的 下一个单词, 的所有可能 ...
- ASP.NET Core之由配置系统与创建app所想到的
先看文件配置的代码: ConfigurationBuilder configBuilder=new ConfigurationBuiler();//典型的创建者模式 configBuilder.Add ...
- pythonnet VS csnake:穿针引线,中西合璧——最强Python & .NET互操作对决
Hello,亲爱的小伙伴们!你是否曾经在深夜里,为了自动化点外卖.筛机票.抓网页数据焦头烂额?有没有幻想过哪天能出个"贴心AI管家",一键点菜.搞定事务.自动操作网页,比你还懂你? ...
- Linux 在文件中统计关键字出现的次数
摘要:在当前文件或者当前目录下所有文件中,使用Linux命令grep.awk.sed.rg或者cat统计关键字出现的次数. 目录 问题背景 解决办法 使用grep和wc命令 使用awk命令模式匹配 使 ...