Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

CVectorTex3.h

Go to the documentation of this file.
00001 /*
00002         
00003         ZMACHINE 2.0 (SIGFRID)
00004 
00005         CVectorTex3D.H
00006 
00007         author:                 Trombetta Roberto
00008         filename:               CVectorTex3.h   
00009         description:    header file for textured vector 3d class 
00010         date:                   20/03/2003
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_



SourceForge.net Logo