VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkHyperOctreeSampleFunction.h 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 =========================================================================*/ 00031 #ifndef __vtkHyperOctreeSampleFunction_h 00032 #define __vtkHyperOctreeSampleFunction_h 00033 00034 #include "vtkHyperOctreeAlgorithm.h" 00035 00036 class vtkImplicitFunction; 00037 00038 class VTK_GRAPHICS_EXPORT vtkHyperOctreeSampleFunction : public vtkHyperOctreeAlgorithm 00039 { 00040 public: 00041 vtkTypeMacro(vtkHyperOctreeSampleFunction,vtkHyperOctreeAlgorithm); 00042 void PrintSelf(ostream& os, vtkIndent indent); 00043 00044 static vtkHyperOctreeSampleFunction *New(); 00045 00048 int GetLevels(); 00049 00054 void SetLevels(int levels); 00055 00058 int GetMinLevels(); 00059 00063 void SetMinLevels(int minLevels); 00064 00067 double GetThreshold(); 00068 00072 void SetThreshold(double threshold); 00073 00077 int GetDimension(); 00078 00079 // Set the dimension of the tree with `dim'. See GetDimension() for details. 00080 // \pre valid_dim: dim>=1 && dim<=3 00081 // \post dimension_is_set: GetDimension()==dim 00082 void SetDimension(int dim); 00083 00085 00086 vtkSetVector3Macro(Size,double); 00088 00090 00091 vtkGetVector3Macro(Size,double); 00093 00095 00096 vtkSetVector3Macro(Origin,double); 00097 // Return the origin (position of corner (0,0,0) ) of the root. 00098 vtkGetVector3Macro(Origin,double); 00100 00102 double GetWidth(); 00103 00106 void SetWidth(double width); 00107 00110 double GetHeight(); 00111 00115 void SetHeight(double height); 00116 00119 double GetDepth(); 00120 00124 void SetDepth(double depth); 00125 00127 00128 virtual void SetImplicitFunction(vtkImplicitFunction*); 00129 vtkGetObjectMacro(ImplicitFunction,vtkImplicitFunction); 00131 00133 00134 vtkSetMacro(OutputScalarType,int); 00135 vtkGetMacro(OutputScalarType,int); 00136 void SetOutputScalarTypeToDouble() 00137 {this->SetOutputScalarType(VTK_DOUBLE);} 00138 void SetOutputScalarTypeToFloat() 00139 {this->SetOutputScalarType(VTK_FLOAT);} 00140 void SetOutputScalarTypeToLong() 00141 {this->SetOutputScalarType(VTK_LONG);} 00142 void SetOutputScalarTypeToUnsignedLong() 00143 {this->SetOutputScalarType(VTK_UNSIGNED_LONG);}; 00144 void SetOutputScalarTypeToInt() 00145 {this->SetOutputScalarType(VTK_INT);} 00146 void SetOutputScalarTypeToUnsignedInt() 00147 {this->SetOutputScalarType(VTK_UNSIGNED_INT);} 00148 void SetOutputScalarTypeToShort() 00149 {this->SetOutputScalarType(VTK_SHORT);} 00150 void SetOutputScalarTypeToUnsignedShort() 00151 {this->SetOutputScalarType(VTK_UNSIGNED_SHORT);} 00152 void SetOutputScalarTypeToChar() 00153 {this->SetOutputScalarType(VTK_CHAR);} 00154 void SetOutputScalarTypeToUnsignedChar() 00155 {this->SetOutputScalarType(VTK_UNSIGNED_CHAR);} 00157 00159 unsigned long GetMTime(); 00160 00161 protected: 00163 00166 vtkHyperOctreeSampleFunction(); 00167 ~vtkHyperOctreeSampleFunction(); 00169 00170 00171 int RequestInformation (vtkInformation * vtkNotUsed(request), 00172 vtkInformationVector ** vtkNotUsed( inputVector ), 00173 vtkInformationVector *outputVector); 00174 00175 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00176 00177 void Subdivide(vtkHyperOctreeCursor *cursor, 00178 int level, 00179 vtkHyperOctree *output); 00180 00181 int Dimension; 00182 double Size[3]; // size on each axis 00183 double Origin[3]; // position of corner (0,0,0) of the root. 00184 int Levels; 00185 int MinLevels; 00186 00187 int OutputScalarType; 00188 vtkImplicitFunction *ImplicitFunction; 00189 double Threshold; 00190 00191 private: 00192 vtkHyperOctreeSampleFunction(const vtkHyperOctreeSampleFunction&); // Not implemented. 00193 void operator=(const vtkHyperOctreeSampleFunction&); // Not implemented. 00194 }; 00195 00196 #endif