Rev 59 | Blame | Last modification | View Log | RSS feed
#ifndef __HMESHUTIL_MESH_OPTIMIZATION_H
#define __HMESHUTIL_MESH_OPTIMIZATION_H
#include "HMesh/Manifold.h"
namespace HMeshUtil
{
class EnergyFun
{
public:
virtual double delta_energy(HMesh::HalfEdgeIter) const = 0;
virtual double energy(HMesh::HalfEdgeIter) const {return 0;}
};
void priority_queue_optimization(HMesh::Manifold& m, const EnergyFun& efun);
void simulated_annealing_optimization(HMesh::Manifold& m,
const EnergyFun& efun,
int max_iter=10000);
void minimize_dihedral_angle(HMesh::Manifold& m,
int max_iter=10000,
bool anneal=false,
bool alpha=false,
double gamma=4.0);
void minimize_curvature(HMesh::Manifold& m, bool anneal=false);
void minimize_gauss_curvature(HMesh::Manifold& m, bool anneal=false);
void maximize_min_angle(HMesh::Manifold& m, float thresh, bool anneal=false);
void optimize_valency(HMesh::Manifold& m, bool anneal=false);
void randomize_mesh(HMesh::Manifold& m, int max_iter);
}
#endif