OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ViewingParameters.hh
1 /*===========================================================================*\
2  * *
3  * OpenMesh *
4  * Copyright (C) 2001-2015 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: 1188 $ *
38  * $Date: 2015-01-05 16:34:10 +0100 (Mo, 05 Jan 2015) $ *
39  * *
40 \*===========================================================================*/
41 
42 
43 //=============================================================================
44 //
45 // CLASS newClass
46 //
47 //=============================================================================
48 
49 #ifndef OPENMESH_VDPROGMESH_VIEWINGPARAMETERS_HH
50 #define OPENMESH_VDPROGMESH_VIEWINGPARAMETERS_HH
51 
52 
53 //== INCLUDES =================================================================
54 
55 #include <OpenMesh/Core/Geometry/VectorT.hh>
56 #include <OpenMesh/Core/Geometry/Plane3d.hh>
57 
58 
59 //== FORWARDDECLARATIONS ======================================================
60 
61 
62 //== NAMESPACES ===============================================================
63 
64 namespace OpenMesh {
65 namespace VDPM {
66 
67 //== CLASS DEFINITION =========================================================
68 
69 
72 class OPENMESHDLLEXPORT ViewingParameters
73 {
74 private:
75  double modelview_matrix_[16];
76  float fovy_;
77  float aspect_;
78  float tolerance_square_;
79 
80  Vec3f eye_pos_;
81  Vec3f right_dir_;
82  Vec3f up_dir_;
83  Vec3f view_dir_;
84 
85  Plane3d frustum_plane_[4];
86 
87 public:
88 
90 
91  void increase_tolerance() { tolerance_square_ *= 5.0f; }
92  void decrease_tolerance() { tolerance_square_ /= 5.0f; }
93 
94  float fovy() const { return fovy_; }
95  float aspect() const { return aspect_; }
96  float tolerance_square() const { return tolerance_square_; }
97 
98  void set_fovy(float _fovy) { fovy_ = _fovy; }
99  void set_aspect(float _aspect) { aspect_ = _aspect; }
100  void set_tolerance_square(float _tolerance_square) { tolerance_square_ = _tolerance_square; }
101 
102  const Vec3f& eye_pos() const { return eye_pos_; }
103  const Vec3f& right_dir() const { return right_dir_; }
104  const Vec3f& up_dir() const { return up_dir_; }
105  const Vec3f& view_dir() const { return view_dir_; }
106  Vec3f& eye_pos() { return eye_pos_; }
107  Vec3f& right_dir() { return right_dir_; }
108  Vec3f& up_dir() { return up_dir_; }
109  Vec3f& view_dir() { return view_dir_; }
110 
111  void frustum_planes( Plane3d _plane[4] )
112  {
113  for (unsigned int i=0; i<4; ++i)
114  _plane[i] = frustum_plane_[i];
115  }
116 
117  void get_modelview_matrix(double _modelview_matrix[16])
118  {
119  for (unsigned int i=0; i<16; ++i)
120  _modelview_matrix[i] = modelview_matrix_[i];
121  }
122 
123  void set_modelview_matrix(const double _modelview_matrix[16])
124  {
125  for (unsigned int i=0; i<16; ++i)
126  modelview_matrix_[i] = _modelview_matrix[i];
127  }
128 
129  void update_viewing_configurations();
130 
131  void PrintOut();
132 };
133 
134 
135 //=============================================================================
136 } // namespace VDPM
137 } // namespace OpenMesh
138 //=============================================================================
139 #endif // OPENMESH_VDPROGMESH_VIEWINGPARAMETERS_HH defined
140 //=============================================================================
141 
Definition: ViewingParameters.hh:72
ax + by + cz + d = 0
Definition: Plane3d.hh:74
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:56

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .