Rev 433 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*
* off_save.cpp
* GEL
*
* Created by J. Andreas Bærentzen on 17/02/09.
* Copyright 2009 __MyCompanyName__. All rights reserved.
*
*/
#include <fstream>
#include <iostream>
#include <string>
#include "off_save.h"
#include "HMesh/FaceCirculator.h"
namespace HMesh
{
using namespace std;
using namespace CGLA;
using namespace HMesh;
bool off_save(const std::string& filename, Manifold& m)
{
ofstream os(filename.data());
if(os.bad()) return false;
os << "OFF " << endl;
os << m.no_vertices() << " " << m.no_faces() << " " << m.no_halfedges()/2 << endl;
int k=0;
vector<int> touched_vals(m.no_vertices());
for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
{
touched_vals[k] = vi->touched;
vi->touched = k;
Vec3f p = vi->pos;
os << p[0] << " " << p[1] << " " << p[2] << endl;
}
for(FaceIter fi = m.faces_begin();fi != m.faces_end(); ++fi)
{
std::vector<int> verts;
for(FaceCirculator fc(fi);!fc.end();++fc)
{
verts.push_back(fc.get_vertex()->touched);
}
os << verts.size() << " ";
for(size_t i=0;i<verts.size();++i)
{
os << verts[i] << " ";
}
os << "\n";
}
k=0;
for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
vi->touched = touched_vals[k];
return true;
}
}