00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00040 #ifndef __vtkInterpolatedVelocityField_h
00041 #define __vtkInterpolatedVelocityField_h
00042
00043 #include "vtkFunctionSet.h"
00044
00045 class vtkDataSet;
00046 class vtkDataArray;
00047 class vtkPointData;
00048 class vtkGenericCell;
00049
00050 class vtkInterpolatedVelocityFieldDataSetsType;
00051
00052 class VTK_FILTERING_EXPORT vtkInterpolatedVelocityField : public vtkFunctionSet
00053 {
00054 public:
00055 vtkTypeRevisionMacro(vtkInterpolatedVelocityField,vtkFunctionSet);
00056 virtual void PrintSelf(ostream& os, vtkIndent indent);
00057
00060 static vtkInterpolatedVelocityField *New();
00061
00064 virtual int FunctionValues(double* x, double* f);
00065
00070 virtual void AddDataSet(vtkDataSet* dataset);
00071
00073
00074 vtkGetMacro(LastCellId, vtkIdType);
00075 void SetLastCellId(vtkIdType c)
00076 { this->LastCellId = c; }
00077 void SetLastCellId(vtkIdType c, int dataindex);
00079
00082 void ClearLastCellId() { this->LastCellId = -1; }
00083
00085
00088 int GetLastWeights(double* w);
00089 int GetLastLocalCoordinates(double pcoords[3]);
00091
00093
00094 vtkGetMacro(Caching, int);
00095 vtkSetMacro(Caching, int);
00096 vtkBooleanMacro(Caching, int);
00098
00100
00101 vtkGetMacro(CacheHit, int);
00102 vtkGetMacro(CacheMiss, int);
00104
00106
00109 vtkGetStringMacro(VectorsSelection);
00110 void SelectVectors(const char *fieldName)
00111 {this->SetVectorsSelection(fieldName);}
00113
00115
00122 vtkGetObjectMacro(LastDataSet, vtkDataSet);
00123 vtkGetMacro(LastDataSetIndex, int);
00125
00128 virtual void CopyParameters(vtkInterpolatedVelocityField* from);
00129
00130 protected:
00131 vtkInterpolatedVelocityField();
00132 ~vtkInterpolatedVelocityField();
00133
00134 vtkGenericCell* GenCell;
00135 vtkGenericCell* Cell;
00136 double* Weights;
00137 int WeightsSize;
00138 double LastPCoords[3];
00139 vtkIdType LastCellId;
00140 int CacheHit;
00141 int CacheMiss;
00142 int Caching;
00143 int LastDataSetIndex;
00144
00145 vtkDataSet* LastDataSet;
00146
00147 vtkSetStringMacro(VectorsSelection);
00148 char *VectorsSelection;
00149
00150 vtkInterpolatedVelocityFieldDataSetsType* DataSets;
00151
00152 int FunctionValues(vtkDataSet* ds, double* x, double* f);
00153
00154 friend class vtkTemporalInterpolatedVelocityField;
00156
00160 void FastCompute(vtkDataArray* vectors, double f[3]);
00161 bool InterpolatePoint(vtkPointData *outPD,
00162 vtkIdType outIndex);
00163 vtkGenericCell *GetLastCell();
00165
00166
00167 static const double TOLERANCE_SCALE;
00168
00169 private:
00170 vtkInterpolatedVelocityField(const vtkInterpolatedVelocityField&);
00171 void operator=(const vtkInterpolatedVelocityField&);
00172 };
00173
00174 #endif
00175
00176
00177
00178
00179
00180
00181
00182