VTK
dox/Graphics/vtkMarchingCubes.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkMarchingCubes.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 =========================================================================*/
00038 #ifndef __vtkMarchingCubes_h
00039 #define __vtkMarchingCubes_h
00040 
00041 #include "vtkPolyDataAlgorithm.h"
00042 
00043 #include "vtkContourValues.h" // Needed for direct access to ContourValues
00044 
00045 class vtkIncrementalPointLocator;
00046 
00047 class VTK_GRAPHICS_EXPORT vtkMarchingCubes : public vtkPolyDataAlgorithm
00048 {
00049 public:
00050   static vtkMarchingCubes *New();
00051   vtkTypeMacro(vtkMarchingCubes,vtkPolyDataAlgorithm);
00052   void PrintSelf(ostream& os, vtkIndent indent);
00053 
00054   // Methods to set contour values
00055   void SetValue(int i, double value);
00056   double GetValue(int i);
00057   double *GetValues();
00058   void GetValues(double *contourValues);
00059   void SetNumberOfContours(int number);
00060   int GetNumberOfContours();
00061   void GenerateValues(int numContours, double range[2]);
00062   void GenerateValues(int numContours, double rangeStart, double rangeEnd);
00063 
00064   // Because we delegate to vtkContourValues
00065   unsigned long int GetMTime();
00066 
00068 
00072   vtkSetMacro(ComputeNormals,int);
00073   vtkGetMacro(ComputeNormals,int);
00074   vtkBooleanMacro(ComputeNormals,int);
00076 
00078 
00084   vtkSetMacro(ComputeGradients,int);
00085   vtkGetMacro(ComputeGradients,int);
00086   vtkBooleanMacro(ComputeGradients,int);
00088 
00090 
00091   vtkSetMacro(ComputeScalars,int);
00092   vtkGetMacro(ComputeScalars,int);
00093   vtkBooleanMacro(ComputeScalars,int);
00095 
00097 
00099   void SetLocator(vtkIncrementalPointLocator *locator);
00100   vtkGetObjectMacro(Locator,vtkIncrementalPointLocator);
00102 
00105   void CreateDefaultLocator();
00106 
00107 protected:
00108   vtkMarchingCubes();
00109   ~vtkMarchingCubes();
00110 
00111   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00112   virtual int FillInputPortInformation(int port, vtkInformation *info);
00113 
00114   vtkContourValues *ContourValues;
00115   int ComputeNormals;
00116   int ComputeGradients;
00117   int ComputeScalars;
00118   vtkIncrementalPointLocator *Locator;
00119 private:
00120   vtkMarchingCubes(const vtkMarchingCubes&);  // Not implemented.
00121   void operator=(const vtkMarchingCubes&);  // Not implemented.
00122 };
00123 
00125 
00127 inline void vtkMarchingCubes::SetValue(int i, double value)
00128 {this->ContourValues->SetValue(i,value);}
00130 
00132 
00133 inline double vtkMarchingCubes::GetValue(int i)
00134 {return this->ContourValues->GetValue(i);}
00136 
00138 
00140 inline double *vtkMarchingCubes::GetValues()
00141 {return this->ContourValues->GetValues();}
00143 
00145 
00148 inline void vtkMarchingCubes::GetValues(double *contourValues)
00149 {this->ContourValues->GetValues(contourValues);}
00151 
00153 
00156 inline void vtkMarchingCubes::SetNumberOfContours(int number)
00157 {this->ContourValues->SetNumberOfContours(number);}
00159 
00161 
00162 inline int vtkMarchingCubes::GetNumberOfContours()
00163 {return this->ContourValues->GetNumberOfContours();}
00165 
00167 
00169 inline void vtkMarchingCubes::GenerateValues(int numContours, double range[2])
00170 {this->ContourValues->GenerateValues(numContours, range);}
00172 
00174 
00176 inline void vtkMarchingCubes::GenerateValues(int numContours, double
00177                                              rangeStart, double rangeEnd)
00178 {this->ContourValues->GenerateValues(numContours, rangeStart, rangeEnd);}
00180 
00181 #endif