Developer Documentation
|
#include <OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Tools/Smoother/SmootherT.hh>
Public Types | |
enum | Component { Tangential , Normal , Tangential_and_Normal } |
enum | Continuity { C0 , C1 , C2 } |
typedef Mesh::Scalar | Scalar |
typedef Mesh::Point | Point |
typedef Mesh::Normal | NormalType |
typedef Mesh::VertexHandle | VertexHandle |
typedef Mesh::EdgeHandle | EdgeHandle |
Public Member Functions | |
SmootherT (Mesh &_mesh) | |
constructor & destructor More... | |
Initialization and algorithm execution | |
void | initialize (Component _comp, Continuity _cont) |
virtual void | smooth (unsigned int _n) |
Do _n smoothing iterations. More... | |
Error control functions | |
void | set_relative_local_error (Scalar _err) |
Set local error relative to bounding box. More... | |
void | set_absolute_local_error (Scalar _err) |
Set local error as an absolute value. More... | |
void | disable_local_error_check () |
Disable error control of the smoother. More... | |
void | skip_features (bool _state) |
enable or disable feature handling More... | |
Protected Member Functions | |
virtual void | compute_new_positions_C0 ()=0 |
virtual void | compute_new_positions_C1 ()=0 |
const Point & | orig_position (VertexHandle _vh) const |
const NormalType & | orig_normal (VertexHandle _vh) const |
const Point & | new_position (VertexHandle _vh) const |
void | set_new_position (VertexHandle _vh, const Point &_p) |
bool | is_active (VertexHandle _vh) const |
Component | component () const |
Continuity | continuity () const |
Protected Attributes | |
Mesh & | mesh_ |
bool | skip_features_ |
Private Member Functions | |
void | set_active_vertices () |
Find active vertices. Resets tagged status ! More... | |
void | compute_new_positions () |
void | project_to_tangent_plane () |
void | local_error_check () |
void | move_points () |
Private Attributes | |
Scalar | tolerance_ |
Scalar | normal_deviation_ |
Component | component_ |
Continuity | continuity_ |
OpenMesh::VPropHandleT< Point > | original_positions_ |
OpenMesh::VPropHandleT< NormalType > | original_normals_ |
OpenMesh::VPropHandleT< Point > | new_positions_ |
OpenMesh::VPropHandleT< bool > | is_active_ |
Base class for smoothing algorithms.
Definition at line 76 of file SmootherT.hh.
typedef Mesh::EdgeHandle OpenMesh::Smoother::SmootherT< Mesh >::EdgeHandle |
Definition at line 84 of file SmootherT.hh.
typedef Mesh::Normal OpenMesh::Smoother::SmootherT< Mesh >::NormalType |
Definition at line 82 of file SmootherT.hh.
typedef Mesh::Point OpenMesh::Smoother::SmootherT< Mesh >::Point |
Definition at line 81 of file SmootherT.hh.
typedef Mesh::Scalar OpenMesh::Smoother::SmootherT< Mesh >::Scalar |
Definition at line 80 of file SmootherT.hh.
typedef Mesh::VertexHandle OpenMesh::Smoother::SmootherT< Mesh >::VertexHandle |
Definition at line 83 of file SmootherT.hh.
enum OpenMesh::Smoother::SmootherT::Component |
Enumerator | |
---|---|
Tangential | Smooth tangential direction. |
Normal | Smooth normal direction. |
Tangential_and_Normal | Smooth tangential and normal direction. |
Definition at line 87 of file SmootherT.hh.
enum OpenMesh::Smoother::SmootherT::Continuity |
Definition at line 93 of file SmootherT.hh.
OpenMesh::Smoother::SmootherT< Mesh >::SmootherT | ( | Mesh & | _mesh | ) |
constructor & destructor
_mesh | Reference a triangle or poly mesh |
Definition at line 72 of file SmootherT_impl.hh.
|
virtual |
Definition at line 100 of file SmootherT_impl.hh.
|
inlineprotected |
Definition at line 221 of file SmootherT.hh.
|
private |
Definition at line 328 of file SmootherT_impl.hh.
|
inlineprotected |
Definition at line 222 of file SmootherT.hh.
void OpenMesh::Smoother::SmootherT< Mesh >::disable_local_error_check |
Disable error control of the smoother.
This function disables the error control of the smoother.
Definition at line 289 of file SmootherT_impl.hh.
void OpenMesh::Smoother::SmootherT< Mesh >::initialize | ( | Component | _comp, |
Continuity | _cont | ||
) |
Initialize smoother
_comp | Determine component to smooth |
_cont | Determine Continuity |
Definition at line 121 of file SmootherT_impl.hh.
|
inlineprotected |
Definition at line 218 of file SmootherT.hh.
|
private |
Definition at line 382 of file SmootherT_impl.hh.
|
private |
Definition at line 416 of file SmootherT_impl.hh.
|
inlineprotected |
Definition at line 212 of file SmootherT.hh.
|
inlineprotected |
Definition at line 209 of file SmootherT.hh.
|
inlineprotected |
Definition at line 206 of file SmootherT.hh.
|
private |
Definition at line 352 of file SmootherT_impl.hh.
void OpenMesh::Smoother::SmootherT< Mesh >::set_absolute_local_error | ( | Scalar | _err | ) |
Set local error as an absolute value.
Set the maximal error tolerance of the smoother to the given value.
_err | Maximal error |
Definition at line 277 of file SmootherT_impl.hh.
|
private |
Find active vertices. Resets tagged status !
This function recomputes the set of active vertices, which will be touched by the smoother. If nothing on the mesh is selected, all vertices which are not locked, feature or boundary will be marked as active and moved by the smoother. If vertices are selected, than only the selected ones, excluding the locked, feature and boundary vertices will be moved.
The function is called first when running the smoother.
Definition at line 151 of file SmootherT_impl.hh.
|
inlineprotected |
Definition at line 215 of file SmootherT.hh.
void OpenMesh::Smoother::SmootherT< Mesh >::set_relative_local_error | ( | Scalar | _err | ) |
Set local error relative to bounding box.
This function sets a maximal error tolerance for the smoother as a fraction of the bounding box of the mesh. First the bounding box diagonal is computed. Then the error is set as the length of the diagonal multiplied with the given factor.
_err | Factor scaling the bounding box diagonal |
Definition at line 247 of file SmootherT_impl.hh.
|
inline |
enable or disable feature handling
This function can be used to control if features on the mesh should be preserved. If enabled, the smoother will keep features and does not modify them. Features can be set via OpenMesh status flags (request status and set primitives as features). Feature flag can be set for vertices edges and faces.
_state | true : If features are selected on the mesh, they will be left unmodified false : Features will be ignored |
Definition at line 167 of file SmootherT.hh.
|
virtual |
Do _n smoothing iterations.
Reimplemented in OpenMesh::Smoother::JacobiLaplaceSmootherT< Mesh >.
Definition at line 301 of file SmootherT_impl.hh.
|
private |
Definition at line 234 of file SmootherT.hh.
|
private |
Definition at line 235 of file SmootherT.hh.
|
private |
Definition at line 240 of file SmootherT.hh.
|
protected |
Definition at line 226 of file SmootherT.hh.
|
private |
Definition at line 239 of file SmootherT.hh.
|
private |
Definition at line 233 of file SmootherT.hh.
|
private |
Definition at line 238 of file SmootherT.hh.
|
private |
Definition at line 237 of file SmootherT.hh.
|
protected |
Definition at line 227 of file SmootherT.hh.
|
private |
Definition at line 232 of file SmootherT.hh.