Subversion Repositories gelsvn

Rev

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

Rev 357 Rev 362
Line 271... Line 271...
271
			
271
			
272
			// For all vertices, compute quadric and store in qem_vec
272
			// For all vertices, compute quadric and store in qem_vec
273
			for(VertexIter vi=m.vertices_begin(); vi != m.vertices_end(); ++vi)
273
			for(VertexIter vi=m.vertices_begin(); vi != m.vertices_end(); ++vi)
274
			{
274
			{
275
				Vec3d p(vi->pos);
275
				Vec3d p(vi->pos);
-
 
276
				Vec3d vn(normal(vi));
276
				QEM q;
277
				QEM q;
277
				for(VertexCirculator vc(vi); !vc.end(); ++vc)
278
				for(VertexCirculator vc(vi); !vc.end(); ++vc)
278
				{
279
				{
279
					FaceIter f = vc.get_face();
280
					FaceIter f = vc.get_face();
280
					if(f != NULL_FACE_ITER)
281
					if(f != NULL_FACE_ITER)
281
					{
282
					{
282
						Vec3d n(normal(f));
283
						Vec3d n(normal(f));
283
						double a = area(f);
284
						double a = area(f);
284
						q += QEM(p, n, a / 3.0);
285
						q += QEM(p, n, a / 3.0);
285
					}
286
					}
-
 
287
					else if (sqr_length(vn) > 0.0)
-
 
288
					{
-
 
289
						Vec3d edge = Vec3d(vc.get_halfedge()->vert->pos)-p;
-
 
290
						double edge_len = sqr_length(edge); 
-
 
291
						if(edge_len > 0.0)
-
 
292
							{
-
 
293
								Vec3d n = cross(vn, edge);
-
 
294
								q += QEM(p, n, 2*edge_len);
-
 
295
							}
-
 
296
					}
286
				}
297
				}
287
				qem_vec[vi->touched] = q;
298
				qem_vec[vi->touched] = q;
288
			}
299
			}
289
			cout << "Pushing initial halfedges" << endl;
300
			cout << "Pushing initial halfedges" << endl;
290
			
301