-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathglpoint.h
More file actions
131 lines (112 loc) · 3.69 KB
/
glpoint.h
File metadata and controls
131 lines (112 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#ifndef GLPOINT_H
#define GLPOINT_H
/* ============================================================================
'glpoint.h' defines a class used to maintain vertices and associated texture
coordinates.
Written by Nicholas Phillips.
QT4 adaption by Michael R. Greason, ADNET, 27 August 2007.
============================================================================ */
/*
Fetch header files.
*/
#include <vector>
#include <QGLViewer/qglviewer.h>
using namespace std;
/* ============================================================================
'GLPoint' maintains the an OpenGL vertex and its associated texture coordinates.
Note: it is defined entirely inline.
============================================================================ */
class GLPoint
{
public:
float x,y,z;
float s,t;
public:
GLPoint(void);
void setVertC(double x_, double y_, double z_);
void setVertS(double theta, double phi, double rad = 1.);
void setTex(double s_, double t_);
void glSet();
};
/* ----------------------------------------------------------------------------
'GLPoint' defines an empty instance.
Arguments:
None.
Returned:
Nothing.
Written by Nicholas Phillips.
QT4 adaption by Michael R. Greason, ADNET, 27 August 2007.
---------------------------------------------------------------------------- */
inline GLPoint::GLPoint() : x(0.), y(0.), z(0.), s(0.), t(0.)
{
}
/* ----------------------------------------------------------------------------
'setVertC' defines a vertex's 3D coordinates.
Arguments:
x,y,z - Its 3D world cartesian coordinates.
Returned:
Nothing.
Written by Nicholas Phillips.
QT4 adaption by Michael R. Greason, ADNET, 27 August 2007.
---------------------------------------------------------------------------- */
inline void GLPoint::setVertC(double x_, double y_, double z_)
{
x = x_;
y = y_;
z = z_;
}
/* ----------------------------------------------------------------------------
'setVertS' defines a vertex's 3D coordinates.
Arguments:
theta - The colatitude, measured from the North Pole in radians.
phi - The longitude in radians.
rad - The radius of the sphere. Defaults to 1.
Returned:
Nothing.
Written by Nicholas Phillips.
QT4 adaption by Michael R. Greason, ADNET, 27 August 2007.
---------------------------------------------------------------------------- */
inline void GLPoint::setVertS(double theta, double phi, double rad)
{
x = rad * cos(phi) * sin(theta);
y = rad * sin(phi) * sin(theta);
z = rad * cos(theta);
}
/* ----------------------------------------------------------------------------
'setTex' defines a vertex's texture coordinates.
Arguments:
s,t - The texture coordinates.
Returned:
Nothing.
Written by Nicholas Phillips.
QT4 adaption by Michael R. Greason, ADNET, 27 August 2007.
---------------------------------------------------------------------------- */
inline void GLPoint::setTex(double s_, double t_)
{
s = s_;
t = t_;
}
/* ----------------------------------------------------------------------------
'glSet' inserts the vertex into the OpenGL system.
Arguments:
None.
Returned:
Nothing.
Written by Nicholas Phillips.
QT4 adaption by Michael R. Greason, ADNET, 27 August 2007.
---------------------------------------------------------------------------- */
inline void GLPoint::glSet()
{
glTexCoord2f( s,t);
glVertex3f( x, y, z);
}
/* ============================================================================
Associated typedefs.
============================================================================ */
typedef std::vector<GLPoint> GLVertices;
typedef GLVertices::iterator GLVertI;
typedef std::vector<GLVertices> GLVertVec;
typedef GLVertVec::iterator GLVertVI;
typedef GLVertVec GLVertList;
typedef GLVertVI GLVertLI;
#endif