VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkMarchingCubes.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 =========================================================================*/ 00035 #ifndef __vtkMarchingCubes_h 00036 #define __vtkMarchingCubes_h 00037 00038 #include "vtkPolyDataAlgorithm.h" 00039 00040 #include "vtkContourValues.h" // Needed for direct access to ContourValues 00041 00042 class vtkPointLocator; 00043 00044 class VTK_GRAPHICS_EXPORT vtkMarchingCubes : public vtkPolyDataAlgorithm 00045 { 00046 public: 00047 static vtkMarchingCubes *New(); 00048 vtkTypeRevisionMacro(vtkMarchingCubes,vtkPolyDataAlgorithm); 00049 void PrintSelf(ostream& os, vtkIndent indent); 00050 00051 // Methods to set contour values 00052 void SetValue(int i, double value); 00053 double GetValue(int i); 00054 double *GetValues(); 00055 void GetValues(double *contourValues); 00056 void SetNumberOfContours(int number); 00057 int GetNumberOfContours(); 00058 void GenerateValues(int numContours, double range[2]); 00059 void GenerateValues(int numContours, double rangeStart, double rangeEnd); 00060 00061 // Because we delegate to vtkContourValues 00062 unsigned long int GetMTime(); 00063 00065 00069 vtkSetMacro(ComputeNormals,int); 00070 vtkGetMacro(ComputeNormals,int); 00071 vtkBooleanMacro(ComputeNormals,int); 00073 00075 00081 vtkSetMacro(ComputeGradients,int); 00082 vtkGetMacro(ComputeGradients,int); 00083 vtkBooleanMacro(ComputeGradients,int); 00085 00087 00088 vtkSetMacro(ComputeScalars,int); 00089 vtkGetMacro(ComputeScalars,int); 00090 vtkBooleanMacro(ComputeScalars,int); 00092 00094 00096 void SetLocator(vtkPointLocator *locator); 00097 vtkGetObjectMacro(Locator,vtkPointLocator); 00099 00102 void CreateDefaultLocator(); 00103 00104 protected: 00105 vtkMarchingCubes(); 00106 ~vtkMarchingCubes(); 00107 00108 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00109 virtual int FillInputPortInformation(int port, vtkInformation *info); 00110 00111 vtkContourValues *ContourValues; 00112 int ComputeNormals; 00113 int ComputeGradients; 00114 int ComputeScalars; 00115 vtkPointLocator *Locator; 00116 private: 00117 vtkMarchingCubes(const vtkMarchingCubes&); // Not implemented. 00118 void operator=(const vtkMarchingCubes&); // Not implemented. 00119 }; 00120 00123 inline void vtkMarchingCubes::SetValue(int i, double value) 00124 {this->ContourValues->SetValue(i,value);} 00125 00127 00128 inline double vtkMarchingCubes::GetValue(int i) 00129 {return this->ContourValues->GetValue(i);} 00131 00133 00135 inline double *vtkMarchingCubes::GetValues() 00136 {return this->ContourValues->GetValues();} 00138 00142 inline void vtkMarchingCubes::GetValues(double *contourValues) 00143 {this->ContourValues->GetValues(contourValues);} 00144 00148 inline void vtkMarchingCubes::SetNumberOfContours(int number) 00149 {this->ContourValues->SetNumberOfContours(number);} 00150 00152 00153 inline int vtkMarchingCubes::GetNumberOfContours() 00154 {return this->ContourValues->GetNumberOfContours();} 00156 00158 00160 inline void vtkMarchingCubes::GenerateValues(int numContours, double range[2]) 00161 {this->ContourValues->GenerateValues(numContours, range);} 00163 00165 00167 inline void vtkMarchingCubes::GenerateValues(int numContours, double 00168 rangeStart, double rangeEnd) 00169 {this->ContourValues->GenerateValues(numContours, rangeStart, rangeEnd);} 00171 00172 #endif