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