Subversion Repositories gelsvn

Rev

Rev 595 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
433 jab 1
/*
2
 *  off_save.cpp
3
 *  GEL
4
 *
5
 *  Created by J. Andreas Bærentzen on 17/02/09.
6
 *  Copyright 2009 __MyCompanyName__. All rights reserved.
7
 *
8
 */
9
 
10
 
11
#include <fstream>
12
#include <iostream>
13
#include <string>
14
#include "off_save.h"
15
#include "HMesh/FaceCirculator.h"
16
 
17
namespace HMesh
18
{
19
	using namespace std;
20
	using namespace CGLA;
21
	using namespace HMesh;
22
 
23
	bool off_save(const std::string& filename, Manifold& m)
24
	{
25
		ofstream os(filename.data());
26
		if(os.bad()) return false;
27
 
28
		os << "OFF " << m.no_vertices() << " " << m.no_faces() << " " << m.no_halfedges()/2 << endl;
29
 
30
		int k=0;
31
		vector<int> touched_vals(m.no_vertices());
32
		for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
33
		{
34
			touched_vals[k] = vi->touched;
35
			vi->touched = k;
36
			Vec3f p = vi->pos;
37
			os << p[0] << " " << p[1] << " " << p[2] << "\n";
38
		}
39
		for(FaceIter fi = m.faces_begin();fi != m.faces_end(); ++fi)
40
		{
41
			std::vector<int> verts;
42
			for(FaceCirculator fc(fi);!fc.end();++fc)
43
			{
44
				verts.push_back(fc.get_vertex()->touched);
45
			}
46
			os << verts.size() << " ";
47
			for(size_t i=0;i<verts.size();++i)
48
			{
49
				os << verts[i] << " ";
50
			}
51
			os << "\n";
52
		}
53
		k=0;
54
		for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
55
			vi->touched = touched_vals[k];
56
		return true;
57
	}
58
 
59
}