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 #ifndef MESH_DIVER_HH
00026 #define MESH_DIVER_HH
00027
00028 #include <vector>
00029 #include "vector.hh"
00030 #include "vertex.hh"
00031
00039 class CVertex;
00040
00046
00047
00048 class CMesh1Diver
00049 {
00050 protected:
00051 int FSx;
00052 int FIx; TCoordinate FKx0, FKx1;
00053
00054 public:
00055
00056
00057
00063 CMesh1Diver(int ASx);
00064
00066 virtual ~CMesh1Diver();
00067
00069
00070
00071
00072
00074 int getSx() const;
00075
00080 virtual void setIx(int AIx);
00081
00082
00083
00084
00085
00090 virtual CVertex computeCurrentVertex() const = 0;
00091
00092
00093 };
00094
00095 class CMesh2Diver : public CMesh1Diver
00096 {
00097 protected:
00098 int FSy;
00099 int FIy; TCoordinate FKy0, FKy1;
00100
00101 public:
00102
00103
00104
00111 CMesh2Diver(int ASx, int ASy);
00112
00114 virtual ~CMesh2Diver();
00115
00116
00117
00118
00119
00120
00121 int getSy() const;
00122
00127 virtual void setIy(int AIy);
00128
00129
00130 };
00131
00132 class CMesh3Diver : public CMesh2Diver
00133 {
00134 protected:
00135 int FSz;
00136 int FIz; TCoordinate FKz0, FKz1;
00137
00138 public:
00139
00140
00141
00149 CMesh3Diver(int ASx, int ASy, int ASz);
00150
00152 virtual ~CMesh3Diver();
00153
00154
00155
00156
00157
00159 int getSz() const;
00160
00165 virtual void setIz(int AIz);
00166
00167
00168 };
00169
00170
00171
00177
00178
00179 class CMesh1BasicDiver : public CMesh1Diver
00180 {
00181 private:
00182 CVertex FOrigin;
00183 CVertex FVectorX;
00184
00185 public:
00186
00187
00188
00198 CMesh1BasicDiver(int ASx,
00199 const CVertex& AOrigin,
00200 const CVertex& AVectorX);
00201
00203 virtual ~CMesh1BasicDiver();
00204
00205
00206
00207
00208
00210 virtual CVertex computeCurrentVertex() const;
00211
00212
00213 };
00214
00215 class CMesh2BasicDiver : public CMesh2Diver
00216 {
00217 private:
00218 CVertex FOrigin;
00219 CVertex FVectorX;
00220 CVertex FVectorY;
00221
00222 public:
00223
00224
00225
00238 CMesh2BasicDiver(int ASx, int ASy,
00239 const CVertex & AOrigin,
00240 const CVertex & AVectorX,
00241 const CVertex & AVectorY);
00242
00244 virtual ~CMesh2BasicDiver();
00245
00246
00247
00248
00249
00251 virtual CVertex computeCurrentVertex() const;
00252
00253
00254 };
00255
00256 class CMesh3BasicDiver : public CMesh3Diver
00257 {
00258 private:
00259 CVertex FOrigin;
00260 CVertex FVectorX;
00261 CVertex FVectorY;
00262 CVertex FVectorZ;
00263
00264 public:
00265
00266
00267
00282 CMesh3BasicDiver(int ASx, int ASy, int ASz,
00283 const CVertex& AOrigin,
00284 const CVertex& AVectorX,
00285 const CVertex& AVectorY,
00286 const CVertex& AVectorZ);
00287
00289 virtual ~CMesh3BasicDiver();
00290
00291
00292
00293
00294
00296 virtual CVertex computeCurrentVertex() const;
00297
00298
00299 };
00300
00301
00302
00308
00309
00310 class CMesh1VectorDiver : public CMesh1Diver
00311 {
00312 protected:
00313 std::vector<CVertex> FVertices;
00314
00315 public:
00316
00317
00318
00325 CMesh1VectorDiver(const std::vector<CVertex>& AVector);
00326
00328 virtual ~CMesh1VectorDiver();
00329
00330
00331
00332
00333
00335 virtual CVertex computeCurrentVertex() const;
00336
00337
00338 };
00339
00341
00342 #include INCLUDE_INLINE("mesh-diver.icc")
00343
00344 #endif // MESH_DIVER_HH
00345