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
ViewingParameters.hh
1 /*===========================================================================*\
2 * *
3 * OpenMesh *
4 * Copyright (C) 2001-2012 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: 736 $ *
38 * $Date: 2012-10-08 09:30:49 +0200 (Mo, 08 Okt 2012) $ *
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
89 ViewingParameters();
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