688 |
khor |
1 |
/**
|
|
|
2 |
* @file smooth.h
|
|
|
3 |
* @brief Functions for mesh smoothing.
|
|
|
4 |
*/
|
|
|
5 |
|
|
|
6 |
/* ----------------------------------------------------------------------- *
|
|
|
7 |
* This file is part of GEL, http://www.imm.dtu.dk/GEL
|
|
|
8 |
* Copyright (C) the authors and DTU Informatics
|
|
|
9 |
* For license and list of authors, see ../../doc/intro.pdf
|
|
|
10 |
* ----------------------------------------------------------------------- */
|
|
|
11 |
|
|
|
12 |
#ifndef __HMESH_SMOOTH_H
|
|
|
13 |
#define __HMESH_SMOOTH_H
|
|
|
14 |
|
|
|
15 |
#include <vector>
|
|
|
16 |
#include "Manifold.h"
|
|
|
17 |
|
|
|
18 |
namespace HMesh
|
|
|
19 |
{
|
|
|
20 |
enum NormalSmoothMethod {FVM_NORMAL_SMOOTH, BILATERAL_NORMAL_SMOOTH};
|
|
|
21 |
|
|
|
22 |
/// Simple laplacian smoothing with an optional weight.
|
|
|
23 |
void laplacian_smooth(HMesh::Manifold& m, float t=1.0f, int iter=1);
|
|
|
24 |
|
|
|
25 |
/// Taubin smoothing is similar to laplacian smoothing but reduces shrinkage
|
|
|
26 |
void taubin_smooth(HMesh::Manifold& m, int iter=1);
|
|
|
27 |
|
|
|
28 |
/** Smooth meshes by first filtering normals and then refitting the mesh */
|
|
|
29 |
void anisotropic_smooth(HMesh::Manifold& m, int iter, NormalSmoothMethod nsm);
|
|
|
30 |
|
|
|
31 |
/// Tangential area weighted smoothing.
|
|
|
32 |
void TAL_smoothing(HMesh::Manifold& m, float w, int iter=1);
|
|
|
33 |
|
|
|
34 |
}
|
|
|
35 |
#endif
|