Subversion Repositories gelsvn

Rev

Rev 145 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
107 bj 1
#include <sstream>
2
#include <fstream>
3
#if defined(_MSC_VER)
4
#include <io.h>
5
#else
6
#include <unistd.h>
7
#endif
8
#include "CGLA/Mat2x2f.h"
9
#include "Geometry/Polygonizer.h"
10
#include "Geometry/TrilinFilter.h"
11
#include "Geometry/load_raw.h"
157 jab 12
#include "HMesh/build_manifold.h"
13
#include "HMesh/obj_save.h"
107 bj 14
#include "Util/ArgExtracter.h"
15
 
16
using namespace HMesh;
17
using namespace Geometry;
18
using namespace CGLA;
19
using namespace Util;
20
using namespace std;
21
 
22
 
23
/* Create an implicit function: Just union of two spheres */
24
class TestImplicit: public ImplicitFunction
25
{
26
		const Vec3f c0, c1;
27
public:
28
 
29
		TestImplicit(): c0(0,0,0), c1(2,2,2)  {}
30
 
31
		float eval(float x,float y,float z) 
32
				{
33
						Vec3f p(x,y,z);
34
						return min(length(p-c0)-2.0f,length(p-c1)-2.0f);
35
				}
36
};
37
 
38
 
39
int main(int argc, char **argv)
40
{
41
	// Create an implicit.
42
	TestImplicit imp;
43
 
44
	// Create a polygonizer. Cell side length = 0.1 and go up to 50 cells.
45
	Polygonizer pol(&imp, 0.1f, 50);	
46
 
47
	// Start polygonizer in vicinity of 1,1,1
48
	pol.march(1,1,1);
49
 
50
	// Build HMesh from triangles
51
	vector<int> indices;
52
	vector<Vec3f> verts;
53
	vector<int> faces;
54
 
55
	// Extract vertices
56
 	for(int i=0;i<pol.no_vertices();++i)
57
	{
58
			verts.push_back(*reinterpret_cast<Vec3f*>(&pol.get_vertex(i)));
59
	}
60
 
61
	// Extract triangles.
62
 	for(int i=0;i<pol.no_triangles();++i)
63
	{
64
			faces.push_back(3);
65
			TRIANGLE f = pol.get_triangle(i);
66
			indices.push_back(f.v0);
67
			indices.push_back(f.v1);
68
			indices.push_back(f.v2);
69
	}
70
 
71
	// Build manifold
72
	Manifold m;
73
	build_manifold(m, verts.size(), &verts[0], 
74
								 faces.size(), &faces[0], &indices[0]);
75
 
76
	// Save as obj file
77
 	obj_save("../../data/bloomenthal.obj", m);
78
 
79
}