00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "Zdef.h"
00015 #include "ZMacro.h"
00016
00017 #ifndef __CVECTORTEX3_H_
00018 #define __CVECTORTEX3_H_
00019
00021
00025 class CVectorTex3 : public CVector3 {
00026
00027 public:
00028
00030 zfloat fTexcoord [2];
00032 zfloat fNormal [3];
00033
00035 inline CVectorTex3 () {
00036
00037 fCoord[0] = 0;
00038 fCoord[1] = 0;
00039 fCoord[2] = 0;
00040
00041 fTexcoord[0] = 0;
00042 fTexcoord[1] = 0;
00043
00044 fNormal[0] = 0;
00045 fNormal[1] = 0;
00046 fNormal[2] = 0;
00047 }
00048
00050 inline CVectorTex3 (zfloat valx, zfloat valy, zfloat valz, zfloat tex0, zfloat tex1){
00051
00052 fCoord[0] = valx;
00053 fCoord[1] = valy;
00054 fCoord[2] = valz;
00055
00056 fTexcoord[0] = tex0;
00057 fTexcoord[1] = tex1;
00058
00059 fNormal[0] = 0;
00060 fNormal[1] = 0;
00061 fNormal[2] = 0;
00062
00063 }
00064
00066 inline CVectorTex3 (zfloat valx, zfloat valy, zfloat valz,
00067 zfloat tex0, zfloat tex1,
00068 zfloat nor0, zfloat nor1, zfloat nor2){
00069
00070 fCoord[0] = valx;
00071 fCoord[1] = valy;
00072 fCoord[2] = valz;
00073
00074 fTexcoord[0] = tex0;
00075 fTexcoord[1] = tex1;
00076
00077 fNormal[0] = nor0;
00078 fNormal[1] = nor1;
00079 fNormal[2] = nor2;
00080
00081 }
00082
00084 inline CVectorTex3 (const CVectorTex3& v){
00085
00086 fCoord[0] = v.fCoord[0];
00087 fCoord[1] = v.fCoord[1];
00088 fCoord[2] = v.fCoord[2];
00089
00090 fTexcoord[0] = v.fTexcoord[0];
00091 fTexcoord[1] = v.fTexcoord[1];
00092
00093 fNormal[0] = v.fNormal[0];
00094 fNormal[1] = v.fNormal[1];
00095 fNormal[2] = v.fNormal[2];
00096
00097 }
00098
00100 ~CVectorTex3 () {};
00101
00103 inline void Set (const CVectorTex3& v){
00104
00105 fCoord[0] = v.fCoord[0];
00106 fCoord[1] = v.fCoord[1];
00107 fCoord[2] = v.fCoord[2];
00108
00109 fTexcoord[0] = v.fTexcoord[0];
00110 fTexcoord[1] = v.fTexcoord[1];
00111
00112 fNormal[0] = v.fNormal[0];
00113 fNormal[1] = v.fNormal[1];
00114 fNormal[2] = v.fNormal[2];
00115
00116 }
00117
00119 inline void SetNormal (zfloat valx, zfloat valy, zfloat valz){
00120
00121 fNormal[0] = valx;
00122 fNormal[1] = valy;
00123 fNormal[2] = valz;
00124
00125 }
00126
00128 inline CVectorTex3 operator= (const CVectorTex3& v){
00129
00130 fCoord[0] = v.fCoord[0];
00131 fCoord[1] = v.fCoord[1];
00132 fCoord[2] = v.fCoord[2];
00133
00134 fTexcoord[0] = v.fTexcoord[0];
00135 fTexcoord[1] = v.fTexcoord[1];
00136
00137 fNormal[0] = v.fNormal[0];
00138 fNormal[1] = v.fNormal[1];
00139 fNormal[2] = v.fNormal[2];
00140
00141 return *this;
00142
00143 }
00144
00146 inline CVectorTex3 operator= (const CVector3& v){
00147
00148 fCoord[0] = v.fCoord[0];
00149 fCoord[1] = v.fCoord[1];
00150 fCoord[2] = v.fCoord[2];
00151
00152 return *this;
00153
00154 }
00155
00156
00158 inline CVectorTex3 operator+= (const CVectorTex3& v){
00159
00160 fCoord[0] += v.fCoord[0];
00161 fCoord[1] += v.fCoord[1];
00162 fCoord[2] += v.fCoord[2];
00163
00164 fTexcoord[0] += v.fTexcoord[0];
00165 fTexcoord[1] += v.fTexcoord[1];
00166
00167 return *this;
00168
00169 }
00170
00172 inline CVectorTex3 operator-= (const CVectorTex3& v){
00173
00174 fCoord[0] -= v.fCoord[0];
00175 fCoord[1] -= v.fCoord[1];
00176 fCoord[2] -= v.fCoord[2];
00177
00178 fTexcoord[0] -= v.fTexcoord[0];
00179 fTexcoord[1] -= v.fTexcoord[1];
00180
00181 return *this;
00182 }
00183
00185 inline CVectorTex3 operator*= (zfloat val){
00186
00187 fCoord[0] *= val;
00188 fCoord[1] *= val;
00189 fCoord[2] *= val;
00190
00191 fTexcoord[0] *= val;
00192 fTexcoord[1] *= val;
00193
00194 return *this;
00195 }
00196
00198 inline CVectorTex3 operator/= (zfloat val){
00199
00200 fCoord[0] /= val;
00201 fCoord[1] /= val;
00202 fCoord[2] /= val;
00203
00204 fTexcoord[0] /= val;
00205 fTexcoord[1] /= val;
00206
00207 return *this;
00208 }
00209
00211 inline CVectorTex3 operator*= (CVectorTex3 v){
00212
00213 fCoord[0] *= v.fCoord[0];
00214 fCoord[1] *= v.fCoord[1];
00215 fCoord[2] *= v.fCoord[2];
00216
00217 fTexcoord[0] *= v.fTexcoord[0];
00218 fTexcoord[1] *= v.fTexcoord[1];
00219
00220 return *this;
00221 }
00222
00224 inline CVectorTex3 operator/= (CVectorTex3 v){
00225
00226 fCoord[0] /= v.fCoord[0];
00227 fCoord[1] /= v.fCoord[1];
00228 fCoord[2] /= v.fCoord[2];
00229
00230 fTexcoord[0] /= v.fTexcoord[0];
00231 fTexcoord[1] /= v.fTexcoord[1];
00232
00233 return *this;
00234 }
00235
00237 inline CVectorTex3 operator+(){return *this;}
00238
00240 inline CVectorTex3 operator-(){
00241
00242 return CVectorTex3(-fCoord[0],
00243 -fCoord[1],
00244 -fCoord[2],
00245 -fTexcoord[0],
00246 -fTexcoord[1],
00247 -fNormal[0],
00248 -fNormal[1],
00249 -fNormal[2]);
00250 }
00251
00253 inline friend CVectorTex3 operator+ (const CVectorTex3& v1, const CVectorTex3& v2) {
00254
00255 return CVectorTex3 (v1.fCoord[0] + v2.fCoord[0],
00256 v1.fCoord[1] + v2.fCoord[1],
00257 v1.fCoord[2] + v2.fCoord[2],
00258 v1.fTexcoord[0] + v2.fTexcoord[0],
00259 v1.fTexcoord[1] + v2.fTexcoord[1]);
00260 }
00261
00263 inline friend CVectorTex3 operator- (const CVectorTex3& v1, const CVectorTex3& v2){
00264
00265 return CVectorTex3 (v1.fCoord[0] - v2.fCoord[0],
00266 v1.fCoord[1] - v2.fCoord[1],
00267 v1.fCoord[2] - v2.fCoord[2],
00268 v1.fTexcoord[0] - v2.fTexcoord[0],
00269 v1.fTexcoord[1] - v2.fTexcoord[1]);
00270 }
00271
00273 inline friend zfloat operator* (const CVectorTex3& v1, const CVectorTex3& v2){
00274
00275 return v1.fCoord[0]*v2.fCoord[0] +
00276 v1.fCoord[1]*v2.fCoord[1] +
00277 v1.fCoord[2]*v2.fCoord[2];
00278 }
00279
00281 inline friend CVectorTex3 operator% (const CVectorTex3& v1, const CVectorTex3& v2){
00282
00283 return CVectorTex3 (v1.fCoord[1]*v2.fCoord[2] - v1.fCoord[2]*v2.fCoord[1],
00284 v1.fCoord[2]*v2.fCoord[0] - v1.fCoord[0]*v2.fCoord[2],
00285 v1.fCoord[0]*v2.fCoord[1] - v1.fCoord[1]*v2.fCoord[0],
00286 0,
00287 0);
00288
00289 }
00290
00291
00293 inline friend CVectorTex3 operator* (const CVectorTex3& v, zfloat val){
00294
00295 return CVectorTex3(v.fCoord[0]*val,
00296 v.fCoord[1]*val,
00297 v.fCoord[2]*val,
00298 v.fTexcoord[0]*val,
00299 v.fTexcoord[1]*val);
00300
00301 }
00302
00304 inline friend CVectorTex3 operator* (zfloat val, const CVectorTex3& v){
00305
00306 return CVectorTex3(v.fCoord[0]*val,
00307 v.fCoord[1]*val,
00308 v.fCoord[2]*val,
00309 v.fTexcoord[0]*val,
00310 v.fTexcoord[1]*val);
00311 }
00312
00314 inline friend CVectorTex3 operator* (const CVectorTex3& v, zuint val){
00315
00316 return CVectorTex3(v.fCoord[0]*(zfloat)val,
00317 v.fCoord[1]*(zfloat)val,
00318 v.fCoord[2]*(zfloat)val,
00319 v.fTexcoord[0]*(zfloat)val,
00320 v.fTexcoord[1]*(zfloat)val);
00321 }
00322
00324 inline friend CVectorTex3 operator* (zuint val, const CVectorTex3& v){
00325
00326 return CVectorTex3(v.fCoord[0]*(zfloat)val,
00327 v.fCoord[1]*(zfloat)val,
00328 v.fCoord[2]*(zfloat)val,
00329 v.fTexcoord[0]*(zfloat)val,
00330 v.fTexcoord[1]*(zfloat)val);
00331 }
00332
00334 inline friend CVectorTex3 operator/ (const CVectorTex3& v, zfloat val){
00335
00336 return CVectorTex3(v.fCoord[0]/val,
00337 v.fCoord[1]/val,
00338 v.fCoord[2]/val,
00339 v.fTexcoord[0]/val,
00340 v.fTexcoord[1]/val);
00341 }
00342
00344 inline friend CVectorTex3 operator/ (zfloat val,const CVectorTex3& v){
00345
00346 return CVectorTex3(v.fCoord[0]/val,
00347 v.fCoord[1]/val,
00348 v.fCoord[2]/val,
00349 v.fTexcoord[0]/val,
00350 v.fTexcoord[1]/val);
00351 }
00352
00354 inline friend CVectorTex3 operator/ (const CVectorTex3& v, zuint val){
00355
00356 return CVectorTex3(v.fCoord[0]/(zfloat)val,
00357 v.fCoord[1]/(zfloat)val,
00358 v.fCoord[2]/(zfloat)val,
00359 v.fTexcoord[0]/(zfloat)val,
00360 v.fTexcoord[1]/(zfloat)val);
00361 }
00362
00363
00365 inline friend CVectorTex3 operator/ (zuint val,const CVectorTex3& v){
00366
00367 return CVectorTex3(v.fCoord[0]/(zfloat)val,
00368 v.fCoord[1]/(zfloat)val,
00369 v.fCoord[2]/(zfloat)val,
00370 v.fTexcoord[0]/(zfloat)val,
00371 v.fTexcoord[1]/(zfloat)val);
00372 }
00373
00374 };
00375
00376 #endif // define __CVECTORTEX3_H_