00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _PO_BASESTREAMLINE_
00025 #define _PO_BASESTREAMLINE_
00026
00027 #include <MeshViz/3Ddata/PoMesh.h>
00028
00029 class SbVec3f;
00030 class PbCell;
00031 class PiStreamPath;
00032 class PoCellFilter;
00033
00096 class PoBaseStreamLine : public PoMesh {
00097
00098 SO_KIT_HEADER(PoBaseStreamLine) ;
00099
00100
00101 public:
00102
00106 PoBaseStreamLine() ;
00107
00108
00109
00113 SoMFVec3f startPoints;
00114
00119 SoMFColor colors;
00120
00126 SoSFFloat maxLifetime;
00127
00132 SoSFFloat maxLength;
00133
00138 SoSFFloat minSpeed;
00139
00147 SoSFFloat integrationStepLengthFactor;
00148
00154 SoSFInt32 integrationMaxStepNumber;
00155
00159 SoSFEnum integrationDirection;
00160
00164 enum IntegrationDirection {
00168 FORWARD,
00172 BACKWARD
00173 } ;
00174
00175
00176
00177
00178 private:
00179 static void initClass() ;
00180 static void exitClass() ;
00181
00182 void integrateStreamLine(const PbCell *start_cell, const SbVec3f &start_point, const SbVec3f &pcoord, PiStreamPath &stream_path,
00183 float &length, float &time,
00184 const PoCellFilter* cell_filter,const float *values_filter);
00185 void integrateStreamLine(const SbVec3f &start_point, PiStreamPath &stream_path,
00186 float &length, float &time);
00187
00188 private:
00189 virtual ~PoBaseStreamLine() ;
00190
00191
00192
00193 virtual void setDefaultOnNonWritingFields() ;
00194 virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways = FALSE) ;
00195 virtual void addElementsAllCaches() ;
00196 virtual void preRebuild();
00197
00198 virtual void saveNorm(PiStreamPath &stream_path, const PbCell *cell, SbVec3f &coord, SbVec3f &pcoords);
00199 virtual void saveSpeed(PiStreamPath &stream_path, SbVec3f &speed);
00200 virtual void saveTime(PiStreamPath &stream_path, float time);
00201
00202 private:
00203
00204 FieldSensorList m_fieldSensorList ;
00205
00206
00207 SoFieldList m_fieldList ;
00208 } ;
00209
00210
00211
00212 #endif
00213
00214
00215