Subversion Repositories gelsvn

Rev

Rev 149 | Rev 182 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
149 jab 1
#ifndef __HMESHUTIL_MESH_OPTIMIZATION_H
2
#define __HMESHUTIL_MESH_OPTIMIZATION_H
3
 
4
#include "HMesh/Manifold.h"
5
 
150 jab 6
namespace HMesh
149 jab 7
{
8
  class EnergyFun
9
  {
10
  public:
11
    virtual double delta_energy(HMesh::HalfEdgeIter) const = 0;
12
    virtual double energy(HMesh::HalfEdgeIter) const {return 0;}
13
  };
14
 
15
  void priority_queue_optimization(HMesh::Manifold& m, const EnergyFun& efun);
16
 
17
  void simulated_annealing_optimization(HMesh::Manifold& m, 
18
					const EnergyFun& efun,
19
					int max_iter=10000);
20
 
21
	void minimize_dihedral_angle(HMesh::Manifold& m,
22
															 int max_iter=10000,
23
															 bool anneal=false,
24
															 bool alpha=false,
25
															 double gamma=4.0);
26
  void minimize_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);
29
  void optimize_valency(HMesh::Manifold& m, bool anneal=false);
30
  void randomize_mesh(HMesh::Manifold& m, int max_iter);
31
 
32
}
33
 
34
 
35
#endif