Developer Documentation
Loading...
Searching...
No Matches
MixedDecimaterT.hh
Go to the documentation of this file.
1
/* ========================================================================= *
2
* *
3
* OpenMesh *
4
* Copyright (c) 2001-2025, RWTH-Aachen University *
5
* Department of Computer Graphics and Multimedia *
6
* All rights reserved. *
7
* www.openmesh.org *
8
* *
9
*---------------------------------------------------------------------------*
10
* This file is part of OpenMesh. *
11
*---------------------------------------------------------------------------*
12
* *
13
* Redistribution and use in source and binary forms, with or without *
14
* modification, are permitted provided that the following conditions *
15
* are met: *
16
* *
17
* 1. Redistributions of source code must retain the above copyright notice, *
18
* this list of conditions and the following disclaimer. *
19
* *
20
* 2. Redistributions in binary form must reproduce the above copyright *
21
* notice, this list of conditions and the following disclaimer in the *
22
* documentation and/or other materials provided with the distribution. *
23
* *
24
* 3. Neither the name of the copyright holder nor the names of its *
25
* contributors may be used to endorse or promote products derived from *
26
* this software without specific prior written permission. *
27
* *
28
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39
* *
40
* ========================================================================= */
41
42
46
//=============================================================================
47
//
48
// CLASS MixedDecimaterT - IMPLEMENTATION
49
//
50
//=============================================================================
51
52
#ifndef OPENMESH_MIXED_DECIMATER_DECIMATERT_HH
53
#define OPENMESH_MIXED_DECIMATER_DECIMATERT_HH
54
55
56
//== INCLUDES =================================================================
57
58
#include <memory>
59
#include <
OpenMesh/Tools/Decimater/McDecimaterT.hh
>
60
#include <
OpenMesh/Tools/Decimater/DecimaterT.hh
>
61
62
63
64
//== NAMESPACE ================================================================
65
66
namespace
OpenMesh
{
67
namespace
Decimater {
68
69
70
//== CLASS DEFINITION =========================================================
71
72
76
template
<
typename
MeshT >
77
class
MixedDecimaterT
:
public
McDecimaterT
<MeshT>,
public
DecimaterT
<MeshT>
78
{
79
public
:
//-------------------------------------------------------- public types
80
81
typedef
McDecimaterT< MeshT >
Self
;
82
typedef
MeshT
Mesh
;
83
typedef
CollapseInfoT<MeshT>
CollapseInfo
;
84
typedef
ModBaseT<MeshT>
Module
;
85
typedef
std::vector< Module* > ModuleList;
86
typedef
typename
ModuleList::iterator ModuleListIterator;
87
88
public
:
//------------------------------------------------------ public methods
89
91
MixedDecimaterT
(
Mesh
& _mesh );
92
94
~MixedDecimaterT
();
95
96
public
:
97
113
size_t
decimate
(
const
size_t
_n_collapses,
const
float
_mc_factor ,
bool
_only_selected =
false
);
114
129
size_t
decimate_to
(
size_t
_n_vertices,
const
float
_mc_factor ,
bool
_only_selected =
false
)
130
{
131
return
( (_n_vertices < this->
mesh
().n_vertices()) ?
132
decimate( this->
mesh
().n_vertices() - _n_vertices, _mc_factor , _only_selected) : 0 );
133
}
134
152
size_t
decimate_to_faces(
const
size_t
_n_vertices=0,
const
size_t
_n_faces=0 ,
const
float
_mc_factor = 0.8 ,
bool
_only_selected =
false
);
153
154
private
:
//------------------------------------------------------- private data
155
156
};
157
158
//=============================================================================
159
}
// END_NS_DECIMATER
160
}
// END_NS_OPENMESH
161
//=============================================================================
162
#if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_MIXED_DECIMATER_DECIMATERT_CC)
163
#define OPENMESH_MIXED_DECIMATER_TEMPLATES
164
#include "
MixedDecimaterT_impl.hh
"
165
#endif
166
//=============================================================================
167
#endif
// OPENMESH_MIXED_DECIMATER_DECIMATERT_HH
168
//=============================================================================
DecimaterT.hh
McDecimaterT.hh
MixedDecimaterT_impl.hh
OpenMesh::Decimater::BaseDecimaterT::mesh
Mesh & mesh()
access mesh. used in modules.
Definition
BaseDecimaterT.hh:138
OpenMesh::Decimater::DecimaterT
Definition
DecimaterT.hh:79
OpenMesh::Decimater::McDecimaterT
Definition
McDecimaterT.hh:78
OpenMesh::Decimater::MixedDecimaterT
Definition
MixedDecimaterT.hh:78
OpenMesh::Decimater::MixedDecimaterT::decimate
size_t decimate(const size_t _n_collapses, const float _mc_factor, bool _only_selected=false)
Decimate (perform _n_collapses collapses). Return number of performed collapses. If _n_collapses is n...
Definition
MixedDecimaterT_impl.hh:85
OpenMesh::Decimater::MixedDecimaterT::decimate_to
size_t decimate_to(size_t _n_vertices, const float _mc_factor, bool _only_selected=false)
Decimate the mesh to a desired target vertex complexity.
Definition
MixedDecimaterT.hh:129
OpenMesh::Decimater::ModBaseT
Definition
ModBaseT.hh:193
OpenVolumeMesh::GeometryKernel
Definition
GeometryKernel.hh:50
OpenMesh
Definition
MeshItems.hh:59
OpenMesh::Decimater::CollapseInfoT
Definition
CollapseInfoT.hh:74
OpenFlipper
libs_required
OpenMesh
src
OpenMesh
Tools
Decimater
MixedDecimaterT.hh
Generated on Wed Jul 16 2025 14:44:33 for Developer Documentation by
1.9.8