Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __ftgl__
00029 # warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
00030 # include <FTGL/ftgl.h>
00031 #endif
00032
00033 #ifndef __FTPoint__
00034 #define __FTPoint__
00035
00036 #ifdef __cplusplus
00037
00038
00042 class FTGL_EXPORT FTPoint
00043 {
00044 public:
00048 inline FTPoint()
00049 {
00050 values[0] = 0;
00051 values[1] = 0;
00052 values[2] = 0;
00053 }
00054
00062 inline FTPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
00063 const FTGL_DOUBLE z = 0)
00064 {
00065 values[0] = x;
00066 values[1] = y;
00067 values[2] = z;
00068 }
00069
00075 inline FTPoint(const FT_Vector& ft_vector)
00076 {
00077 values[0] = ft_vector.x;
00078 values[1] = ft_vector.y;
00079 values[2] = 0;
00080 }
00081
00088 FTPoint Normalise();
00089
00090
00097 inline FTPoint& operator += (const FTPoint& point)
00098 {
00099 values[0] += point.values[0];
00100 values[1] += point.values[1];
00101 values[2] += point.values[2];
00102
00103 return *this;
00104 }
00105
00112 inline FTPoint operator + (const FTPoint& point) const
00113 {
00114 FTPoint temp;
00115 temp.values[0] = values[0] + point.values[0];
00116 temp.values[1] = values[1] + point.values[1];
00117 temp.values[2] = values[2] + point.values[2];
00118
00119 return temp;
00120 }
00121
00128 inline FTPoint& operator -= (const FTPoint& point)
00129 {
00130 values[0] -= point.values[0];
00131 values[1] -= point.values[1];
00132 values[2] -= point.values[2];
00133
00134 return *this;
00135 }
00136
00143 inline FTPoint operator - (const FTPoint& point) const
00144 {
00145 FTPoint temp;
00146 temp.values[0] = values[0] - point.values[0];
00147 temp.values[1] = values[1] - point.values[1];
00148 temp.values[2] = values[2] - point.values[2];
00149
00150 return temp;
00151 }
00152
00159 inline FTPoint operator * (double multiplier) const
00160 {
00161 FTPoint temp;
00162 temp.values[0] = values[0] * multiplier;
00163 temp.values[1] = values[1] * multiplier;
00164 temp.values[2] = values[2] * multiplier;
00165
00166 return temp;
00167 }
00168
00169
00177 inline friend FTPoint operator * (double multiplier, FTPoint& point)
00178 {
00179 return point * multiplier;
00180 }
00181
00182
00190 inline friend double operator * (FTPoint &a, FTPoint& b)
00191 {
00192 return a.values[0] * b.values[0]
00193 + a.values[1] * b.values[1]
00194 + a.values[2] * b.values[2];
00195 }
00196
00197
00204 inline FTPoint operator ^ (const FTPoint& point)
00205 {
00206 FTPoint temp;
00207 temp.values[0] = values[1] * point.values[2]
00208 - values[2] * point.values[1];
00209 temp.values[1] = values[2] * point.values[0]
00210 - values[0] * point.values[2];
00211 temp.values[2] = values[0] * point.values[1]
00212 - values[1] * point.values[0];
00213 return temp;
00214 }
00215
00216
00224 friend bool operator == (const FTPoint &a, const FTPoint &b);
00225
00226
00234 friend bool operator != (const FTPoint &a, const FTPoint &b);
00235
00236
00240 inline operator const FTGL_DOUBLE*() const
00241 {
00242 return values;
00243 }
00244
00245
00249 inline void X(FTGL_DOUBLE x) { values[0] = x; };
00250 inline void Y(FTGL_DOUBLE y) { values[1] = y; };
00251 inline void Z(FTGL_DOUBLE z) { values[2] = z; };
00252
00253
00257 inline FTGL_DOUBLE X() const { return values[0]; };
00258 inline FTGL_DOUBLE Y() const { return values[1]; };
00259 inline FTGL_DOUBLE Z() const { return values[2]; };
00260 inline FTGL_FLOAT Xf() const { return static_cast<FTGL_FLOAT>(values[0]); };
00261 inline FTGL_FLOAT Yf() const { return static_cast<FTGL_FLOAT>(values[1]); };
00262 inline FTGL_FLOAT Zf() const { return static_cast<FTGL_FLOAT>(values[2]); };
00263
00264 private:
00268 FTGL_DOUBLE values[3];
00269 };
00270
00271 #endif //__cplusplus
00272
00273 #endif // __FTPoint__
00274