Subversion Repositories gelsvn

Rev

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

Rev 632 Rev 636
Line 10... Line 10...
10
 */
10
 */
11
 
11
 
12
#ifndef __HMESH_MESH_OPTIMIZATION_H
12
#ifndef __HMESH_MESH_OPTIMIZATION_H
13
#define __HMESH_MESH_OPTIMIZATION_H
13
#define __HMESH_MESH_OPTIMIZATION_H
14
 
14
 
-
 
15
#include <algorithm>
15
#include "Manifold.h"
16
#include "Manifold.h"
16
#include "../CGLA/Vec3d.h"
17
#include "../CGLA/Vec3d.h"
17
namespace HMesh
18
namespace HMesh
18
{
19
{
19
    // forward declarations
20
    // forward declarations
Line 44... Line 45...
44
	{
45
	{
45
		const double gamma;
46
		const double gamma;
46
		const bool use_alpha;
47
		const bool use_alpha;
47
		
48
		
48
		double cos_ang(const CGLA::Vec3d& n1, const CGLA::Vec3d& n2) const
49
		double cos_ang(const CGLA::Vec3d& n1, const CGLA::Vec3d& n2) const
49
		{
50
		{ 
50
			return std::max(-1.0, std::min(1.0, CGLA::dot(n1, n2)));
51
			return (std::max)(-1.0, (std::min)(1.0, CGLA::dot(n1, n2)));
51
		}
52
		}
52
		
53
		
53
		double edge_alpha_energy(CGLA::Vec3d v1, CGLA::Vec3d v2, double ca) const
54
		double edge_alpha_energy(CGLA::Vec3d v1, CGLA::Vec3d v2, double ca) const
54
		{
55
		{
55
			return pow(CGLA::length(v1-v2)*(acos(ca)), 1.0f/gamma); 
56
			return pow(CGLA::length(v1-v2)*(acos(ca)), 1.0f/gamma); 
Line 86... Line 87...
86
		double delta_energy(const HMesh::Manifold& m, HMesh::HalfEdgeID h) const;
87
		double delta_energy(const HMesh::Manifold& m, HMesh::HalfEdgeID h) const;
87
	
88
	
88
		double min_angle(const HMesh::Manifold& m, HMesh::HalfEdgeID h) const
89
		double min_angle(const HMesh::Manifold& m, HMesh::HalfEdgeID h) const
89
		{
90
		{
90
			compute_angles(m, h);
91
			compute_angles(m, h);
91
			return std::min(std::min(std::min(std::min(aa_12, aa_b1), aa_c1), aa_2a), aa_2d);
92
			return (std::min)((std::min)((std::min)((std::min)(aa_12, aa_b1), aa_c1), aa_2a), aa_2d);
92
		}		
93
		}		
93
	};
94
	};
94
	
95
	
95
	class CurvatureEnergy: public EnergyFun
96
	class CurvatureEnergy: public EnergyFun
96
	{
97
	{