Subversion Repositories gelsvn

Rev

Rev 433 | Go to most recent revision | Details | Compare with Previous | 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
 
521 s042372 28
		os << "OFF " << endl;
29
		os << m.no_vertices() << " " << m.no_faces() << " " << m.no_halfedges()/2 << endl;
433 jab 30
 
31
		int k=0;
32
		vector<int> touched_vals(m.no_vertices());
33
		for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
34
		{
35
			touched_vals[k] = vi->touched;
36
			vi->touched = k;
37
			Vec3f p = vi->pos;
521 s042372 38
			os << p[0] << " " << p[1] << " " << p[2] << endl;
433 jab 39
		}
40
		for(FaceIter fi = m.faces_begin();fi != m.faces_end(); ++fi)
41
		{
42
			std::vector<int> verts;
43
			for(FaceCirculator fc(fi);!fc.end();++fc)
44
			{
45
				verts.push_back(fc.get_vertex()->touched);
46
			}
47
			os << verts.size() << " ";
48
			for(size_t i=0;i<verts.size();++i)
49
			{
50
				os << verts[i] << " ";
51
			}
52
			os << "\n";
53
		}
54
		k=0;
55
		for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
56
			vi->touched = touched_vals[k];
57
		return true;
58
	}
59
 
60
}