简介

使用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 库的更多相关文章

  1. 生成lua的静态库.动态库.lua.exe和luac.exe

    前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across me ...

  2. VS2013 生成sqlite3动态连接库及sqlite3.dll的调用

    一,生成sqlite3动态连接库1,去sqlite官网上下载最近的sqlite源码包,解压后得到四个文件:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h此处还需要sq ...

  3. Android NDK生成及连接静态库与动态库

    对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用.但是在某些情况下,我们需要借助C/C++来写JNI本地代码.比如,在使用跨平台的第三方库的时候:为了提升密集计算性能的时 ...

  4. 用NDK生成cURL和OpenSSL库

    最近在用Qt开发Android应用时需要获取https页面内容,但Qt内置的QNetworkAccessManager类只支持下面这些协议(调用其supportedSchemes成员函数获取): (& ...

  5. Linux下Gcc生成和使用静态库和动态库详解(转)

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  6. Linux下Gcc生成和使用静态库和动态库详解

    参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...

  7. Linux-Gcc生成和使用静态库和动态库详解

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  8. Qt5中生成和使用静态库

    在QT中静态库的后缀名为.a,在vs中开发的静态库后缀名为.lib.QT版本为5.2.1,系统为Windows. 一. 静态库的生成 新建项目. 新建一个静态库的项目,如图1.1所示:项目名称为tes ...

  9. 【转】Linux下gcc生成和使用静态库和动态库详解

    一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...

  10. 二维码生成:使用 JavaScript 库QRCode.js生成二维码

    QRCode.js:跨浏览器的javascript二维码生成库,支持html5的Canvas画布,没有任何依赖. Github 地址:https://github.com/davidshimjs/qr ...

随机推荐

  1. app自动化设计

    一.在pom.xml引入依赖 testng:测试框架用例管理 appium:需要用到appium log4j:日志集成 allure:生成报告 二.po分层 分为基础层,page层,用例层,xml文件 ...

  2. Gnirehtet —— 通过 USB 让手机共享 PC 网络

    Gnirehtet 使用教程 什么是 Gnirehtet? Gnirehtet("Tethering" 反写)是 Google 开发的开源工具,用于 通过 USB 共享 PC 网络 ...

  3. jdbc写一个访问数据库的工具类

    操作的工具类 package com.zjw.jdbc2; /** * jdbc操作的工具类 * @author Administrator * */ import java.sql.Connecti ...

  4. 【MOOC】华中科技大学操作系统慕课答案-期末测试题

    文章目录 单选题 填空题 判断题 主观题 单选题 1 ‎当操作系统处理缺页中断的时候,CPU处在 . A. 用户态 √B. 核态 C. 不确定的状态 D. 空闲状态 2 ‌操作系统的用户界面可以分为两 ...

  5. 一站式搭建交友平台-交友系统源码-支持H5小程序+带安装说明+可封装APP-交友网站系统平台搭建

    诺诺婚恋交友系统 1.系统基于TP6+Uni-app框架开发:客户移动端采用uni-app开发,管理后台TH6开发. 2.系统支持微信公众号端.微信小程序端.H5端.PC端多端账号同步,可快速打包生成 ...

  6. 从零到一:利用金仓社区数据,LoRa微调与Spring AI 构建私有化千问模型

    上次我们在Coze平台上成功搭建了一个针对金仓问题的解决助手.这个智能体的核心工作流程相对简单:每次它通过HTTP接口调用插件,在金仓平台内部进行搜索,随后利用大模型的推理能力对查询结果进行分析,从而 ...

  7. 递归神经网络 RNN 原理(上)

    前篇对于 RNN 前奏, 或者说是 NLP 的基础, 语言模型 (Language Model) 有了一点认识. LM 的应用场景为 在词库中, 搜索出 符合当前给定 句子的 下一个单词, 的所有可能 ...

  8. ASP.NET Core之由配置系统与创建app所想到的

    先看文件配置的代码: ConfigurationBuilder configBuilder=new ConfigurationBuiler();//典型的创建者模式 configBuilder.Add ...

  9. pythonnet VS csnake:穿针引线,中西合璧——最强Python & .NET互操作对决

    Hello,亲爱的小伙伴们!你是否曾经在深夜里,为了自动化点外卖.筛机票.抓网页数据焦头烂额?有没有幻想过哪天能出个"贴心AI管家",一键点菜.搞定事务.自动操作网页,比你还懂你? ...

  10. Linux 在文件中统计关键字出现的次数

    摘要:在当前文件或者当前目录下所有文件中,使用Linux命令grep.awk.sed.rg或者cat统计关键字出现的次数. 目录 问题背景 解决办法 使用grep和wc命令 使用awk命令模式匹配 使 ...