Subversion Repositories gelsvn

Rev

Rev 129 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 129 Rev 444
Line 3... Line 3...
3
 
3
 
4
using namespace CGLA;
4
using namespace CGLA;
5
 
5
 
6
namespace HMesh
6
namespace HMesh
7
{
7
{
-
 
8
	HalfEdgeIter get_null_halfedge_iter()
-
 
9
	{
-
 
10
		static HalfEdgeList l;
-
 
11
		return l.end();
-
 
12
	}
-
 
13
	
8
		template<class R>
14
	template<class R>
9
		HalfEdge_template<R>::HalfEdge_template():
15
	HalfEdge_template<R>::HalfEdge_template():
10
				vert(NULL_VERTEX_ITER),
16
	vert(NULL_VERTEX_ITER),
11
				next(NULL_HALFEDGE_ITER),
17
	next(NULL_HALFEDGE_ITER),
12
				prev(NULL_HALFEDGE_ITER),
18
	prev(NULL_HALFEDGE_ITER),
13
				face(NULL_FACE_ITER),
19
	face(NULL_FACE_ITER),
14
				opp(NULL_HALFEDGE_ITER),
20
	opp(NULL_HALFEDGE_ITER),
15
				touched(0)
21
	touched(0)
16
		{}
22
	{}
17
 
23
	
18
		bool is_boundary(HalfEdgeIter h)
24
	bool is_boundary(HalfEdgeIter h)
19
		{
25
	{
20
				return h->face == NULL_FACE_ITER || h->opp->face == NULL_FACE_ITER;
26
		return h->face == NULL_FACE_ITER || h->opp->face == NULL_FACE_ITER;
21
		}
27
	}
22
 
28
	
23
 
29
	
24
		void link(HalfEdgeIter h0, HalfEdgeIter h1)
30
	void link(HalfEdgeIter h0, HalfEdgeIter h1)
25
		{
31
	{
26
				h0->next = h1;
32
		h0->next = h1;
27
				h1->prev = h0;
33
		h1->prev = h0;
28
		}
34
	}
29
 
35
	
30
		void glue(HalfEdgeIter h0, HalfEdgeIter h1)
36
	void glue(HalfEdgeIter h0, HalfEdgeIter h1)
31
		{
37
	{
32
				h0->opp = h1;
38
		h0->opp = h1;
33
				h1->opp = h0;
39
		h1->opp = h0;
34
		}
40
	}
35
 
41
	
36
		float length(HalfEdgeIter h)
42
	float length(HalfEdgeIter h)
37
		{
43
	{
38
				return (h->vert->pos-h->opp->vert->pos).length();
44
		return (h->vert->pos-h->opp->vert->pos).length();
39
		}
45
	}
40
 
46
	
41
		
47
	
42
		template struct HalfEdge_template<Iters>;
48
	template struct HalfEdge_template<Iters>;
43
 
49
	
44
 
50
	
45
}
51
}