00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDividingCubes.h,v $ 00005 Language: C++ 00006 00007 00008 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 00009 All rights reserved. 00010 00011 THIS CLASS IS PATENTED UNDER UNITED STATES PATENT NUMBER 4,719,585 00012 "Dividing Cubes System and Method for the Display of Surface Structures 00013 Contained Within the Interior Region of a Solid Body". 00014 Application of this software for commercial purposes requires 00015 a license grant from GE. Contact: 00016 Jerald Roehling 00017 GE Licensing 00018 One Independence Way 00019 PO Box 2023 00020 Princeton, N.J. 08540 00021 phone 609-734-9823 00022 e-mail:Roehlinj@gerlmo.ge.com 00023 for more information. 00024 00025 Redistribution and use in source and binary forms, with or without 00026 modification, are permitted provided that the following conditions are met: 00027 00028 * Redistributions of source code must retain the above copyright notice, 00029 this list of conditions and the following disclaimer. 00030 00031 * Redistributions in binary form must reproduce the above copyright notice, 00032 this list of conditions and the following disclaimer in the documentation 00033 and/or other materials provided with the distribution. 00034 00035 * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names 00036 of any contributors may be used to endorse or promote products derived 00037 from this software without specific prior written permission. 00038 00039 * Modified source versions must be plainly marked as such, and must not be 00040 misrepresented as being the original software. 00041 00042 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 00043 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00044 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00045 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR 00046 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00047 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00048 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00049 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00050 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00051 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00052 00053 =========================================================================*/ 00075 #ifndef __vtkDividingCubes_h 00076 #define __vtkDividingCubes_h 00077 00078 #include "vtkStructuredPointsToPolyDataFilter.h" 00079 00080 class VTK_EXPORT vtkDividingCubes : public vtkStructuredPointsToPolyDataFilter 00081 { 00082 public: 00083 static vtkDividingCubes *New(); 00084 vtkTypeMacro(vtkDividingCubes,vtkStructuredPointsToPolyDataFilter); 00085 void PrintSelf(ostream& os, vtkIndent indent); 00086 00088 vtkSetMacro(Value,float); 00089 vtkGetMacro(Value,float); 00090 00092 vtkSetClampMacro(Distance,float,1.0e-06,VTK_LARGE_FLOAT); 00093 vtkGetMacro(Distance,float); 00094 00098 vtkSetClampMacro(Increment,int,1,VTK_LARGE_INTEGER); 00099 vtkGetMacro(Increment,int); 00100 00101 protected: 00102 vtkDividingCubes(); 00103 ~vtkDividingCubes(); 00104 vtkDividingCubes(const vtkDividingCubes&) {}; 00105 void operator=(const vtkDividingCubes&) {}; 00106 00107 void Execute(); 00108 void SubDivide(float origin[3], int dim[3], float h[3], float values[8]); 00109 00110 float Value; 00111 float Distance; 00112 int Increment; 00113 00114 // working variable 00115 int Count; 00116 00117 vtkIdList *SubVoxelPts; 00118 vtkVoxel *SubVoxel; 00119 vtkScalars *SubVoxelScalars; 00120 vtkNormals *SubVoxelNormals; 00121 }; 00122 00123 #endif 00124 00125