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 #include "vertex.hh"
00026 #include <cassert>
00027
00028 INLINE
00029 CMesh1Diver::~CMesh1Diver()
00030 {}
00031
00032 INLINE
00033 void CMesh1Diver::setIx(int AIx)
00034 {
00035 assert(0<=AIx && AIx<=FSx);
00036 FIx = AIx;
00037 FKx1 = FSx==0 ? 0 : FIx/(TCoordinate) FSx;
00038 FKx0 = FSx==0 ? 0 : 1-FKx1;
00039 }
00040
00041 INLINE
00042 CMesh2Diver::~CMesh2Diver()
00043 {}
00044
00045 INLINE
00046 CVertex CMesh1Diver::computeCurrentVertex() const
00047 {
00048 assert(false);
00049 return ORIGIN;
00050 }
00051
00052 INLINE
00053 void CMesh2Diver::setIy(int AIy)
00054 {
00055 assert(0<=AIy && AIy<=FSy);
00056 FIy = AIy;
00057 FKy1 = FSy==0 ? 0 : FIy/(TCoordinate) FSy;
00058 FKy0 = FSy==0 ? 0 : 1-FKy1;
00059 }
00060
00061 INLINE
00062 CMesh3Diver::~CMesh3Diver()
00063 {}
00064
00065
00066 INLINE
00067 CMesh1BasicDiver::CMesh1BasicDiver(int ASx,
00068 const CVertex& AOrigin,
00069 const CVertex& AVectorX)
00070 : CMesh1Diver(ASx)
00071 {
00072 FOrigin = AOrigin;
00073 FVectorX = AVectorX;
00074 }
00075
00076 INLINE
00077 CMesh1BasicDiver::~CMesh1BasicDiver()
00078 {}
00079
00080 INLINE
00081 CMesh2BasicDiver::CMesh2BasicDiver(int ASx, int ASy,
00082 const CVertex& AOrigin,
00083 const CVertex& AVectorX,
00084 const CVertex& AVectorY)
00085 : CMesh2Diver(ASx, ASy)
00086 {
00087 FOrigin = AOrigin;
00088 FVectorX = AVectorX;
00089 FVectorY = AVectorY;
00090 }
00091
00092 INLINE
00093 CMesh2BasicDiver::~CMesh2BasicDiver()
00094 {}
00095
00096 INLINE
00097 CMesh3BasicDiver::CMesh3BasicDiver(int ASx, int ASy, int ASz,
00098 const CVertex& AOrigin,
00099 const CVertex& AVectorX,
00100 const CVertex& AVectorY,
00101 const CVertex& AVectorZ)
00102 : CMesh3Diver(ASx, ASy, ASz)
00103 {
00104 FOrigin = AOrigin;
00105 FVectorX = AVectorX;
00106 FVectorY = AVectorY;
00107 FVectorZ = AVectorZ;
00108 }
00109
00110 INLINE
00111 CMesh3BasicDiver::~CMesh3BasicDiver()
00112 {}
00113
00114
00115 INLINE
00116 CMesh1Diver::CMesh1Diver(int ASx)
00117 {
00118 assert(ASx>=0);
00119
00120 FIx = 0 ;
00121 FSx = ASx;
00122 }
00123
00124 INLINE
00125 int CMesh1Diver::getSx() const
00126 {
00127 return FSx;
00128 }
00129
00130 INLINE
00131 int CMesh2Diver::getSy() const
00132 {
00133 return FSy;
00134 }
00135
00136 INLINE
00137 CMesh2Diver::CMesh2Diver(int ASx, int ASy)
00138 : CMesh1Diver(ASx)
00139 {
00140 assert(ASy>=0);
00141
00142 FIy = 0 ;
00143 FSy = ASy;
00144 }
00145
00146 INLINE
00147 CMesh3Diver::CMesh3Diver(int ASx, int ASy, int ASz)
00148 : CMesh2Diver(ASx, ASy)
00149 {
00150 assert(ASz>=0);
00151
00152 FIz = 0 ;
00153 FSz = ASz;
00154 }
00155
00156 INLINE
00157 int CMesh3Diver::getSz() const
00158 {
00159 return FSz;
00160 }
00161
00162 INLINE
00163 void CMesh3Diver::setIz(int AIz)
00164 {
00165 assert(0<=AIz && AIz<=FSz);
00166 FIz = AIz;
00167 FKz1 = FSz==0 ? 0 : FIz/(TCoordinate) FSz;
00168 FKz0 = FSz==0 ? 0 : 1-FKz1;
00169 }
00170
00171
00172 INLINE
00173 CVertex CMesh1BasicDiver::computeCurrentVertex() const
00174 {
00175 return FOrigin + FKx1*FVectorX;
00176 }
00177
00178 INLINE
00179 CVertex CMesh2BasicDiver::computeCurrentVertex() const
00180 {
00181 return FOrigin + FKx1*FVectorX + FKy1*FVectorY;
00182 }
00183
00184 INLINE
00185 CVertex CMesh3BasicDiver::computeCurrentVertex() const
00186 {
00187 return FOrigin + FKx1*FVectorX + FKy1*FVectorY + FKz1*FVectorZ;
00188 }
00189
00190
00191 INLINE
00192 CMesh1VectorDiver::CMesh1VectorDiver(const std::vector<CVertex>& AVector) :
00193 CMesh1Diver(AVector.size()-1),
00194 FVertices (AVector)
00195 {
00196 }
00197
00198 INLINE
00199 CMesh1VectorDiver::~CMesh1VectorDiver()
00200 {
00201 }
00202
00203 INLINE
00204 CVertex CMesh1VectorDiver::computeCurrentVertex() const
00205 {
00206 assert( FIx<=getSx() );
00207 return FVertices[FIx];
00208 }
00209