Subversion Repositories gelsvn

Rev

Rev 155 | Rev 160 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 155 Rev 158
Line 8... Line 8...
8
namespace HMesh
8
namespace HMesh
9
{
9
{
10
	using namespace std;
10
	using namespace std;
11
	using namespace CGLA;
11
	using namespace CGLA;
12
 
12
 
-
 
13
	void Manifold::remove_unused()
-
 
14
	{
-
 
15
    for(size_t i=0;i<unused_vertices.size(); ++i)
-
 
16
			vertex_db.erase(unused_vertices[i]);
-
 
17
 
-
 
18
    std::vector<VertexIter> vdummy(0);
-
 
19
    unused_vertices = vdummy;
-
 
20
 
-
 
21
    for(size_t i=0;i<unused_faces.size(); ++i)
-
 
22
			face_db.erase(unused_faces[i]);
-
 
23
 
-
 
24
    std::vector<FaceIter> fdummy(0);
-
 
25
    unused_faces = fdummy;
-
 
26
 
-
 
27
    for(size_t i=0;i<unused_halfedges.size(); ++i)
-
 
28
			halfedge_db.erase(unused_halfedges[i]);
-
 
29
 
-
 
30
    std::vector<HalfEdgeIter> hdummy(0);
-
 
31
    unused_halfedges = hdummy;
-
 
32
	}
-
 
33
	
-
 
34
	void Manifold::clear()
-
 
35
	{
-
 
36
		vertex_db.clear();
-
 
37
		face_db.clear();
-
 
38
		halfedge_db.clear();
-
 
39
 
-
 
40
		std::vector<VertexIter> vdummy(0);
-
 
41
		unused_vertices = vdummy;
-
 
42
					
-
 
43
		std::vector<FaceIter> fdummy(0);
-
 
44
		unused_faces = fdummy;
-
 
45
 
-
 
46
		std::vector<HalfEdgeIter> hdummy(0);
-
 
47
		unused_halfedges = hdummy;
-
 
48
	}
-
 
49
 
-
 
50
 
-
 
51
	void Manifold::erase_halfedge(HalfEdgeIter h)
-
 
52
	{
-
 
53
		if(erase_immediately)
-
 
54
			halfedge_db.erase(h);
-
 
55
		else
-
 
56
			{
-
 
57
				unused_halfedges.push_back(h);
-
 
58
				HalfEdge h_dummy;
-
 
59
				(*h) = h_dummy;
-
 
60
			}
-
 
61
	}
-
 
62
 
-
 
63
	void Manifold::erase_vertex(VertexIter v)
-
 
64
	{
-
 
65
		if(erase_immediately)
-
 
66
			vertex_db.erase(v);
-
 
67
		else
-
 
68
			{
-
 
69
				unused_vertices.push_back(v);
-
 
70
				Vertex v_dummy(v->pos);
-
 
71
				(*v) = v_dummy;
-
 
72
			}
-
 
73
	}
-
 
74
 
-
 
75
	void Manifold::erase_face(FaceIter f)
-
 
76
	{
-
 
77
		if(erase_immediately)
-
 
78
			face_db.erase(f);
-
 
79
		else
-
 
80
			{
-
 
81
				unused_faces.push_back(f);
-
 
82
				Face f_dummy;
-
 
83
				(*f) = f_dummy;
-
 
84
			}
-
 
85
	}
-
 
86
 
-
 
87
 
-
 
88
 
-
 
89
 
13
	void Manifold::get_bbox(Vec3f& pmin, Vec3f& pmax) 
90
	void Manifold::get_bbox(Vec3f& pmin, Vec3f& pmax)
14
	{
91
	{
15
		VertexIter vi = vertices_begin();
92
    VertexIter vi = vertices_begin();
16
		pmin = pmax = vi->pos;
93
    pmin = pmax = vi->pos;
17
		for(++vi;vi != vertices_end(); ++vi)
94
    for(++vi;vi != vertices_end(); ++vi)