Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

Patented/vtkMarchingCubes.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkMarchingCubes.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015      THIS CLASS IS PATENTED UNDER UNITED STATES PATENT NUMBER 4,710,876
00016      "System and Method for the Display of Surface Structures Contained
00017      Within the Interior Region of a Solid Body".
00018      Application of this software for commercial purposes requires 
00019      a license grant from GE. Contact:
00020 
00021          Carl B. Horton
00022          Sr. Counsel, Intellectual Property
00023          3000 N. Grandview Blvd., W-710
00024          Waukesha, WI  53188
00025          Phone:  (262) 513-4022
00026          E-Mail: Carl.Horton@med.ge.com
00027 
00028      for more information.
00029 
00030 =========================================================================*/
00066 #ifndef __vtkMarchingCubes_h
00067 #define __vtkMarchingCubes_h
00068 
00069 #include "vtkStructuredPointsToPolyDataFilter.h"
00070 
00071 #include "vtkContourValues.h" // Needed for direct access to ContourValues
00072 
00073 class vtkPointLocator;
00074 
00075 class VTK_PATENTED_EXPORT vtkMarchingCubes : public vtkStructuredPointsToPolyDataFilter
00076 {
00077 public:
00078   static vtkMarchingCubes *New();
00079   vtkTypeRevisionMacro(vtkMarchingCubes,vtkStructuredPointsToPolyDataFilter);
00080   void PrintSelf(ostream& os, vtkIndent indent);
00081 
00082   // Methods to set contour values
00083   void SetValue(int i, float value);
00084   float GetValue(int i);
00085   float *GetValues();
00086   void GetValues(float *contourValues);
00087   void SetNumberOfContours(int number);
00088   int GetNumberOfContours();
00089   void GenerateValues(int numContours, float range[2]);
00090   void GenerateValues(int numContours, float rangeStart, float rangeEnd);
00091 
00092   // Because we delegate to vtkContourValues
00093   unsigned long int GetMTime();
00094 
00096 
00100   vtkSetMacro(ComputeNormals,int);
00101   vtkGetMacro(ComputeNormals,int);
00102   vtkBooleanMacro(ComputeNormals,int);
00104 
00106 
00112   vtkSetMacro(ComputeGradients,int);
00113   vtkGetMacro(ComputeGradients,int);
00114   vtkBooleanMacro(ComputeGradients,int);
00116 
00118 
00119   vtkSetMacro(ComputeScalars,int);
00120   vtkGetMacro(ComputeScalars,int);
00121   vtkBooleanMacro(ComputeScalars,int);
00123 
00125 
00127   void SetLocator(vtkPointLocator *locator);
00128   vtkGetObjectMacro(Locator,vtkPointLocator);
00130 
00133   void CreateDefaultLocator();
00134 
00135 protected:
00136   vtkMarchingCubes();
00137   ~vtkMarchingCubes();
00138 
00139   void Execute();
00140 
00141   vtkContourValues *ContourValues;
00142   int ComputeNormals;
00143   int ComputeGradients;
00144   int ComputeScalars;
00145   vtkPointLocator *Locator;
00146 private:
00147   vtkMarchingCubes(const vtkMarchingCubes&);  // Not implemented.
00148   void operator=(const vtkMarchingCubes&);  // Not implemented.
00149 };
00150 
00153 inline void vtkMarchingCubes::SetValue(int i, float value)
00154 {this->ContourValues->SetValue(i,value);}
00155 
00157 
00158 inline float vtkMarchingCubes::GetValue(int i)
00159 {return this->ContourValues->GetValue(i);}
00161 
00163 
00165 inline float *vtkMarchingCubes::GetValues()
00166 {return this->ContourValues->GetValues();}
00168 
00172 inline void vtkMarchingCubes::GetValues(float *contourValues)
00173 {this->ContourValues->GetValues(contourValues);}
00174 
00178 inline void vtkMarchingCubes::SetNumberOfContours(int number)
00179 {this->ContourValues->SetNumberOfContours(number);}
00180 
00182 
00183 inline int vtkMarchingCubes::GetNumberOfContours()
00184 {return this->ContourValues->GetNumberOfContours();}
00186 
00188 
00190 inline void vtkMarchingCubes::GenerateValues(int numContours, float range[2])
00191 {this->ContourValues->GenerateValues(numContours, range);}
00193 
00195 
00197 inline void vtkMarchingCubes::GenerateValues(int numContours, float
00198                                              rangeStart, float rangeEnd)
00199 {this->ContourValues->GenerateValues(numContours, rangeStart, rangeEnd);}
00201 
00202 #endif
00203 
00204