zoukankan      html  css  js  c++  java
  • 生成一个Cylinder

    简介

    用到了上一个博客的,AddPolygon。
    生成的是一个筒状物体。

    代码

    // CreateCylinder.cpp: 定义控制台应用程序的入口点。
    //
    
    //#include "stdafx.h"
    #include <iostream>
    #include "AddPolygon.h"
    #include <OpenMesh/Core/IO/MeshIO.hh>
    #include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
    #include<cmath>
    
    MyMesh* CreateCylinder(int edge, double height) {
    	MyMesh * cylinder = new MyMesh;
    	MyMesh::VertexHandle * top = AddPolygon(*cylinder, edge, height / 2, true);
    	MyMesh::VertexHandle * bottom = AddPolygon(*cylinder, edge, -height / 2, false);
    	for (int i = 0; i < edge; i++) {
    		int next = (i + 1) % edge;
    		std::vector<MyMesh::VertexHandle>face_vhandles;
    		face_vhandles.push_back(bottom[i]);
    		face_vhandles.push_back(top[next]);
    		face_vhandles.push_back(top[i]);
    		(*cylinder).add_face(face_vhandles);
    		face_vhandles.clear();
    		face_vhandles.push_back(bottom[i]);
    		face_vhandles.push_back(bottom[next]);
    		face_vhandles.push_back(top[next]);
    		(*cylinder).add_face(face_vhandles);
    	}
    	return cylinder;
    }
    
    
    int main()
    {
    	cout << "Please input edge(int) height(double): 
    ";
    	int edge;
    	double height;
    	cin >> edge >> height;
    	MyMesh * mesh = CreateCylinder(edge, height);
    	
    	try
    	{
    		if (!OpenMesh::IO::write_mesh(*mesh, "output4 .off")) {
    			std::cerr << "Cannot write mesh to file ' output4 .off ' " << std::endl;
    			return 1;
    		}
    	}
    	catch (std::exception&x) {
    		std::cerr << x.what() << std::endl;
    		return 1;
    	}
        return 0;
    }
    
    
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    MySQL数据库分页
    Spring MVC
    Spring框架
    Java学习计划(转载)
    开发用户注册模块
    Ajax技术
    Jodd Email 发送邮件
    DOM技术
    MD5加密
    final关键字的使用
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/11138601.html
Copyright © 2011-2022 走看看