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 78... Line 78...
78
      {
78
      {
79
				HalfEdgeIter h = hedges[i];
79
				HalfEdgeIter h = hedges[i];
80
				h = h->next;
80
				h = h->next;
81
				while(h->vert != v)
81
				while(h->vert != v)
82
					{
82
					{
83
						one_ring.push_back(h->vert->get_pos());
83
						one_ring.push_back(h->vert->pos);
84
						if(h->vert != n)
84
						if(h->vert != n)
85
							one_ring_n.push_back(h->vert->get_pos());
85
							one_ring_n.push_back(h->vert->pos);
86
						h = h->next;
86
						h = h->next;
87
					}
87
					}
88
      }
88
      }
89
    return curv(v->get_pos(),one_ring)-curv(v->get_pos(),one_ring_n);
89
    return curv(v->pos,one_ring)-curv(v->pos,one_ring_n);
90
  }
90
  }
91
 
91
 
92
 
92
 
93
  const CGLA::Vec3f get_normal(const VertexIter& v)
93
  const CGLA::Vec3f get_normal(const VertexIter& v)
94
  {
94
  {
Line 105... Line 105...
105
      {
105
      {
106
				HalfEdgeIter h = hedges[i];
106
				HalfEdgeIter h = hedges[i];
107
				h = h->next;
107
				h = h->next;
108
				while(h->vert != v)
108
				while(h->vert != v)
109
					{
109
					{
110
						one_ring.push_back(h->vert->get_pos());
110
						one_ring.push_back(h->vert->pos);
111
						h = h->next;
111
						h = h->next;
112
					}
112
					}
113
      }
113
      }
114
    Vec3f norm(0);
114
    Vec3f norm(0);
115
    N= one_ring.size();
115
    N= one_ring.size();
116
    Vec3f p0 = v->get_pos();
116
    Vec3f p0 = v->pos;
117
    for(int i=0;i<N;++i)
117
    for(int i=0;i<N;++i)
118
      {
118
      {
119
				Vec3f p1 = one_ring[i];
119
				Vec3f p1 = one_ring[i];
120
				Vec3f p2 = one_ring[(i+1)%N];
120
				Vec3f p2 = one_ring[(i+1)%N];
121
				Vec3f e0 = normalize(p1-p0);
121
				Vec3f e0 = normalize(p1-p0);
Line 166... Line 166...
166
  {
166
  {
167
    vector<Vec3f> one_ring;
167
    vector<Vec3f> one_ring;
168
    vector<HalfEdgeIter> candidates;
168
    vector<HalfEdgeIter> candidates;
169
    get_candidates(v, candidates);
169
    get_candidates(v, candidates);
170
 
170
 
171
    Vec3f p0 = v->get_pos();
171
    Vec3f p0 = v->pos;
172
    Vec3f norm = get_normal(v);
172
    Vec3f norm = normal(v);
173
    int n = candidates.size();
173
    int n = candidates.size();
174
    for(int i=0;i<n;++i)
174
    for(int i=0;i<n;++i)
175
      {
175
      {
176
				VertexIter v_n = candidates[i]->vert;
176
				VertexIter v_n = candidates[i]->vert;
177
				Vec3f edir = normalize(v_n->get_pos()-p0);
177
				Vec3f edir = normalize(v_n->pos-p0);
178
				Vec3f norm_n = get_normal(v_n);
178
				Vec3f norm_n = normal(v_n);
179
				float bad = sqr(dot(edir, norm));
179
				float bad = sqr(dot(edir, norm));
180
				float bad_n = sqr(dot(edir, norm_n));
180
				float bad_n = sqr(dot(edir, norm_n));
181
						
181
						
182
				PotentialEdge pot;
182
				PotentialEdge pot;
183
 
183