OpenMesh

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NormalConeT.hh
1 /*===========================================================================*\
2 * *
3 * OpenMesh *
4 * Copyright (C) 2001-2014 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: 990 $ *
38 * $Date: 2014-02-05 10:01:07 +0100 (Mi, 05. Feb 2014) $ *
39 * *
40 \*===========================================================================*/
41
42
43
44
45 //=============================================================================
46 //
47 // CLASS NormalCone
48 //
49 //=============================================================================
50
51
52 #ifndef OPENMESH_NORMALCONE_HH
53 #define OPENMESH_NORMALCONE_HH
54
55
56 //== INCLUDES =================================================================
57
58
59 #include <OpenMesh/Core/Geometry/VectorT.hh>
60
61
62 //== NAMESPACES ===============================================================
63
64
65 namespace OpenMesh {
66
67
68 //== CLASS DEFINITION =========================================================
69
70
77 template <typename Scalar>
78 class NormalConeT
79 {
80 public:
81
82 // typedefs
83 typedef VectorT<Scalar, 3> Vec3;
84
85
87 NormalConeT() {}
88
90 NormalConeT(const Vec3& _center_normal, Scalar _angle=0.0);
91
93 Scalar max_angle(const Vec3&) const;
94
96 Scalar max_angle(const NormalConeT&) const;
97
99 void merge(const NormalConeT&);
100
102 const Vec3& center_normal() const { return center_normal_; }
103
105 inline Scalar angle() const { return angle_; }
106
107 private:
108
109 Vec3 center_normal_;
110 Scalar angle_;
111 };
112
113
114 //=============================================================================
115 } // namespace OpenMesh
116 //=============================================================================
117 #if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_NORMALCONE_C)
118 #define OPENMESH_NORMALCONE_TEMPLATES
119 #include "NormalConeT.cc"
120 #endif
121 //=============================================================================
122 #endif // OPENMESH_NORMALCONE_HH defined
123 //=============================================================================
124
OpenMesh::NormalConeT
/class NormalCone NormalCone.hh <ACG/Geometry/Types/NormalCone.hh>
Definition: NormalConeT.hh:78
OpenMesh::NormalConeT::merge
void merge(const NormalConeT &)
merge _cone; this instance will then enclose both former cones
Definition: NormalConeT.cc:120
OpenMesh::NormalConeT::angle
Scalar angle() const
returns size of cone (radius in radians)
Definition: NormalConeT.hh:105
OpenMesh::NormalConeT::max_angle
Scalar max_angle(const Vec3 &) const
return max. distance (radians) unit vector to cone (distant side)
Definition: NormalConeT.cc:89
OpenMesh::NormalConeT::NormalConeT
NormalConeT()
default constructor (not initialized)
Definition: NormalConeT.hh:87
VectorT< Scalar, 3 >
OpenMesh::NormalConeT::center_normal
const Vec3 & center_normal() const
returns center normal
Definition: NormalConeT.hh:102