VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkInterpolatedVelocityField.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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; // last cell 00135 vtkGenericCell* Cell; 00136 double* Weights; // last weights 00137 int WeightsSize; 00138 double LastPCoords[3]; // last local coordinates 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 //BTX 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 //ETX 00166 00167 static const double TOLERANCE_SCALE; 00168 00169 private: 00170 vtkInterpolatedVelocityField(const vtkInterpolatedVelocityField&); // Not implemented. 00171 void operator=(const vtkInterpolatedVelocityField&); // Not implemented. 00172 }; 00173 00174 #endif 00175 00176 00177 00178 00179 00180 00181 00182