Subversion Repositories gelsvn

Rev

Rev 150 | Rev 362 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 150 Rev 182
1
#ifndef __HMESHUTIL_MESH_OPTIMIZATION_H
1
#ifndef __HMESHUTIL_MESH_OPTIMIZATION_H
2
#define __HMESHUTIL_MESH_OPTIMIZATION_H
2
#define __HMESHUTIL_MESH_OPTIMIZATION_H
3
 
3
 
4
#include "HMesh/Manifold.h"
4
#include "HMesh/Manifold.h"
5
 
5
 
6
namespace HMesh
6
namespace HMesh
7
{
7
{
8
  class EnergyFun
8
  class EnergyFun
9
  {
9
  {
10
  public:
10
  public:
11
    virtual double delta_energy(HMesh::HalfEdgeIter) const = 0;
11
    virtual double delta_energy(HMesh::HalfEdgeIter) const = 0;
12
    virtual double energy(HMesh::HalfEdgeIter) const {return 0;}
12
    virtual double energy(HMesh::HalfEdgeIter) const {return 0;}
13
  };
13
  };
14
 
14
 
15
  void priority_queue_optimization(HMesh::Manifold& m, const EnergyFun& efun);
15
  void priority_queue_optimization(HMesh::Manifold& m, const EnergyFun& efun);
16
 
16
 
17
  void simulated_annealing_optimization(HMesh::Manifold& m, 
17
  void simulated_annealing_optimization(HMesh::Manifold& m, 
18
					const EnergyFun& efun,
18
					const EnergyFun& efun,
19
					int max_iter=10000);
19
					int max_iter=10000);
20
    
20
    
21
	void minimize_dihedral_angle(HMesh::Manifold& m,
21
	void minimize_dihedral_angle(HMesh::Manifold& m,
22
															 int max_iter=10000,
22
															 int max_iter=10000,
23
															 bool anneal=false,
23
															 bool anneal=false,
24
															 bool alpha=false,
24
															 bool alpha=false,
25
															 double gamma=4.0);
25
															 double gamma=4.0);
26
  void minimize_curvature(HMesh::Manifold& m, bool anneal=false);
26
  void minimize_curvature(HMesh::Manifold& m, bool anneal=false);
27
  void minimize_gauss_curvature(HMesh::Manifold& m, bool anneal=false);
27
  void minimize_gauss_curvature(HMesh::Manifold& m, bool anneal=false);
28
  void maximize_min_angle(HMesh::Manifold& m, float thresh, bool anneal=false);
28
  void maximize_min_angle(HMesh::Manifold& m, float thresh, bool anneal=false);
29
  void optimize_valency(HMesh::Manifold& m, bool anneal=false);
29
  void optimize_valency(HMesh::Manifold& m, bool anneal=false);
30
  void randomize_mesh(HMesh::Manifold& m, int max_iter);
30
  void randomize_mesh(HMesh::Manifold& m, int max_iter);
31
 
31
 
32
}
32
}
33
 
33
 
34
 
34
 
35
#endif
35
#endif
36
 
36