OpenMesh
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
ModAspectRatioT.hh
Go to the documentation of this file.
1
/*===========================================================================*\
2
* *
3
* OpenMesh *
4
* Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen *
5
* www.openmesh.org *
6
* *
7
*---------------------------------------------------------------------------*
8
* This file is part of OpenMesh. *
9
* *
10
* OpenMesh is free software: you can redistribute it and/or modify *
11
* it under the terms of the GNU Lesser General Public License as *
12
* published by the Free Software Foundation, either version 3 of *
13
* the License, or (at your option) any later version with the *
14
* following exceptions: *
15
* *
16
* If other files instantiate templates or use macros *
17
* or inline functions from this file, or you compile this file and *
18
* link it with other files to produce an executable, this file does *
19
* not by itself cause the resulting executable to be covered by the *
20
* GNU Lesser General Public License. This exception does not however *
21
* invalidate any other reasons why the executable file might be *
22
* covered by the GNU Lesser General Public License. *
23
* *
24
* OpenMesh is distributed in the hope that it will be useful, *
25
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
26
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27
* GNU Lesser General Public License for more details. *
28
* *
29
* You should have received a copy of the GNU LesserGeneral Public *
30
* License along with OpenMesh. If not, *
31
* see <http://www.gnu.org/licenses/>. *
32
* *
33
\*===========================================================================*/
34
35
/*===========================================================================*\
36
* *
37
* $Revision: 448 $ *
38
* $Date: 2011-11-04 13:59:37 +0100 (Fri, 04 Nov 2011) $ *
39
* *
40
\*===========================================================================*/
41
45
//=============================================================================
46
//
47
// CLASS ModAspectRatioT
48
//
49
//=============================================================================
50
51
#ifndef OPENMESH_DECIMATER_MODASPECTRATIOT_HH
52
#define OPENMESH_DECIMATER_MODASPECTRATIOT_HH
53
54
//== INCLUDES =================================================================
55
56
#include <
OpenMesh/Tools/Decimater/ModBaseT.hh
>
57
#include <OpenMesh/Core/Utils/Property.hh>
58
59
//== NAMESPACES ===============================================================
60
61
namespace
OpenMesh {
62
namespace
Decimater {
63
64
//== CLASS DEFINITION =========================================================
65
79
template
<
class
DecimaterT>
80
class
ModAspectRatioT
:
public
ModBaseT
<DecimaterT> {
81
public
:
82
83
DECIMATING_MODULE
(
ModAspectRatioT
,
DecimaterT
, Roundness )
84
;
85
86
typedef
typename
Mesh::Scalar Scalar;
87
typedef
typename
Mesh::Point Point;
88
90
ModAspectRatioT
(
DecimaterT
& _dec,
float
_min_aspect = 5.0,
bool
_is_binary =
91
true
) :
92
Base(_dec, _is_binary), mesh_(Base::
mesh
()), min_aspect_(
93
1.0 / _min_aspect) {
94
mesh_.add_property(aspect_);
95
}
96
98
~ModAspectRatioT
() {
99
mesh_.remove_property(aspect_);
100
}
101
103
float
aspect_ratio
()
const
{
104
return
1.0 / min_aspect_;
105
}
106
108
void
set_aspect_ratio
(
float
_f) {
109
min_aspect_ = 1.0 / _f;
110
}
111
113
void
initialize();
114
116
float
collapse_priority(
const
CollapseInfo& _ci);
117
119
void
preprocess_collapse(
const
CollapseInfo& _ci);
120
121
private
:
122
126
Scalar aspectRatio(
const
Point& _v0,
const
Point& _v1,
const
Point& _v2);
127
128
private
:
129
130
Mesh& mesh_;
131
float
min_aspect_;
132
FPropHandleT<float>
aspect_;
133
};
134
135
//=============================================================================
136
}
// END_NS_DECIMATER
137
}
// END_NS_OPENMESH
138
//=============================================================================
139
#if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_DECIMATER_MODASPECTRATIOT_C)
140
#define OPENMESH_DECIMATER_MODASPECTRATIOT_TEMPLATES
141
#include "
ModAspectRatioT.cc
"
142
#endif
143
//=============================================================================
144
#endif // OPENMESH_DECIMATER_MODASPECTRATIOT_HH defined
145
//=============================================================================
146
Project
OpenMesh
, © Computer Graphics Group, RWTH Aachen. Documentation generated using
doxygen
.