Subversion Repositories gelsvn

Rev

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

Rev 39 Rev 62
Line 15... Line 15...
15
		he(NULL_HALFEDGE_ITER),
15
		he(NULL_HALFEDGE_ITER),
16
		pos(_pos),
16
		pos(_pos),
17
		touched(0)
17
		touched(0)
18
	{}
18
	{}
19
 
19
 
20
 
-
 
21
	template<class R>
-
 
22
	bool Vertex_template<R>::is_boundary()
20
	bool is_boundary(VertexIter v)
23
	{
21
	{
24
		return he->is_boundary();
22
		return is_boundary(v->he);
25
	}
23
	}
26
 
24
 
27
	template<class R>
-
 
28
	void Vertex_template<R>::check_boundary_consistency()
25
	void check_boundary_consistency(VertexIter v)
29
	{
26
	{
30
		HalfEdgeIter h = he;
27
		HalfEdgeIter h = v->he;
31
		HalfEdgeIter h0 = h;
28
		HalfEdgeIter h0 = h;
32
#ifndef NDEBUG
29
#ifndef NDEBUG
33
		int k=0;
30
		int k=0;
34
#endif
31
#endif
35
		while(h->face != NULL_FACE_ITER)
32
		while(h->face != NULL_FACE_ITER)
Line 46... Line 43...
46
#endif
43
#endif
47
				h = h->prev->opp;
44
				h = h->prev->opp;
48
				if(h==h0) return;
45
				if(h==h0) return;
49
			}
46
			}
50
 
47
 
51
		he = h;
48
		v->he = h;
52
		HalfEdgeIter h_opp = he->opp;
49
		HalfEdgeIter h_opp = v->he->opp;
53
		while(h_opp->face != NULL_FACE_ITER)
50
		while(h_opp->face != NULL_FACE_ITER)
54
			h_opp = h_opp->next->opp;
51
			h_opp = h_opp->next->opp;
55
		h_opp->next = h;
52
		h_opp->next = h;
56
		h->prev = h_opp;
53
		h->prev = h_opp;
57
	}
54
	}
Line 63... Line 60...
63
		return vc.no_steps();
60
		return vc.no_steps();
64
	}
61
	}
65
 
62
 
66
	const Vec3f normal(VertexIter v)
63
	const Vec3f normal(VertexIter v)
67
	{
64
	{
68
		Vec3f p0 = v->get_pos();
65
		Vec3f p0 = v->pos;
69
		vector<Vec3f> one_ring;						
66
		vector<Vec3f> one_ring;						
70
		for(VertexCirculator vc(v);!vc.end();++vc)
67
		for(VertexCirculator vc(v);!vc.end();++vc)
71
			{
68
			{
72
				Vec3f p = vc.get_vertex()->get_pos();
69
				Vec3f p = vc.get_vertex()->pos;
73
				Vec3f edge = p-p0;
70
				Vec3f edge = p-p0;
74
				float len = length(edge);
71
				float len = length(edge);
75
				if(len>0.0f)
72
				if(len>0.0f)
76
					one_ring.push_back(edge/len);
73
					one_ring.push_back(edge/len);
77
			}
74
			}