Subversion Repositories gelsvn

Rev

Rev 601 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 601 Rev 607
Line 287... Line 287...
287
	double CurvatureEnergy::abs_mean_curv(const Vec3d& v, const vector<Vec3d>& ring) const
287
	double CurvatureEnergy::abs_mean_curv(const Vec3d& v, const vector<Vec3d>& ring) const
288
	{
288
	{
289
		const size_t N = ring.size();
289
		const size_t N = ring.size();
290
		
290
		
291
		double H = 0;
291
		double H = 0;
292
		for(int i = 0; i < N; ++i){
292
		for(size_t i = 0; i < N; ++i){
293
			Vec3d vnim1 = ring[(i+N-1)%N] - v;
293
			Vec3d vnim1 = ring[(i+N-1)%N] - v;
294
			Vec3d vni   = ring[i] - v;
294
			Vec3d vni   = ring[i] - v;
295
			Vec3d vnip1 = ring[(i+1)%N] - v;
295
			Vec3d vnip1 = ring[(i+1)%N] - v;
296
			
296
			
297
			Vec3d Nm = normalize(cross(vni, vnim1));
297
			Vec3d Nm = normalize(cross(vni, vnim1));
Line 386... Line 386...
386
		double gauss_curv(const Vec3d& v, const vector<Vec3d>& ring) const
386
		double gauss_curv(const Vec3d& v, const vector<Vec3d>& ring) const
387
		{
387
		{
388
			const size_t N = ring.size();
388
			const size_t N = ring.size();
389
			double asum=0.0f;
389
			double asum=0.0f;
390
			double area_sum=0;
390
			double area_sum=0;
391
			for(int i = 0; i < N; ++i){
391
			for(size_t i = 0; i < N; ++i){
392
				const Vec3d& v1 = ring[i];
392
				const Vec3d& v1 = ring[i];
393
				const Vec3d& v2 = ring[(i+1)%N];
393
				const Vec3d& v2 = ring[(i+1)%N];
394
				Vec3d a = v1-v;
394
				Vec3d a = v1-v;
395
				Vec3d b = v2-v;
395
				Vec3d b = v2-v;
396
				asum += acos(max(-1.0, min(1.0, dot(a,b)/(length(a)*length(b)))));
396
				asum += acos(max(-1.0, min(1.0, dot(a,b)/(length(a)*length(b)))));