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

Patented/vtkSweptSurface.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkSweptSurface.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 5,542,036
00012     "Implicit Modeling of Swept Volumes and Swept Surfaces"
00013     Application of this software for commercial purposes requires 
00014     a license grant from GE. Contact:
00015 
00016         Carl B. Horton
00017         Sr. Counsel, Intellectual Property
00018         3000 N. Grandview Blvd., W-710
00019         Waukesha, WI  53188
00020         Phone:  (262) 513-4022
00021         E-Mail: Carl.Horton@med.ge.com
00022 
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 =========================================================================*/
00084 #ifndef __vtkSweptSurface_h
00085 #define __vtkSweptSurface_h
00086 
00087 #include "vtkStructuredPointsToStructuredPointsFilter.h"
00088 #include "vtkTransformCollection.h"
00089 
00090 class VTK_PATENTED_EXPORT vtkSweptSurface : public vtkStructuredPointsToStructuredPointsFilter
00091 {
00092 public:
00093   static vtkSweptSurface *New();
00094   vtkTypeMacro(vtkSweptSurface,vtkStructuredPointsToStructuredPointsFilter);
00095   void PrintSelf(ostream& os, vtkIndent indent);
00096 
00098 
00100   vtkSetVector3Macro(SampleDimensions,int);
00101   vtkGetVectorMacro(SampleDimensions,int,3);
00103 
00105 
00107   vtkSetObjectMacro(Transforms, vtkTransformCollection);
00108   vtkGetObjectMacro(Transforms, vtkTransformCollection);
00110 
00112 
00115   vtkSetMacro(FillValue,float);
00116   vtkGetMacro(FillValue,float);
00118 
00120 
00130   vtkSetMacro(NumberOfInterpolationSteps,int);
00131   vtkGetMacro(NumberOfInterpolationSteps,int);
00133 
00135 
00138   vtkSetMacro(MaximumNumberOfInterpolationSteps,int);
00139   vtkGetMacro(MaximumNumberOfInterpolationSteps,int);
00141 
00143 
00148   vtkSetMacro(Capping,int);
00149   vtkGetMacro(Capping,int);
00150   vtkBooleanMacro(Capping,int);
00152   
00154 
00159   vtkSetVectorMacro(ModelBounds,float,6);
00160   vtkGetVectorMacro(ModelBounds,float,6);
00161   void SetModelBounds(float xmin, float xmax, float ymin, float ymax, 
00162                       float zmin, float zmax);
00164 
00166 
00170   vtkSetMacro(AdjustBounds,int);
00171   vtkGetMacro(AdjustBounds,int);
00172   vtkBooleanMacro(AdjustBounds,int);
00174   
00176 
00179   vtkSetClampMacro(AdjustDistance,float,-1.0,1.0);
00180   vtkGetMacro(AdjustDistance,float);
00182 
00183   //overload to check transformation matrices
00184   unsigned long int GetMTime();
00185 
00186 protected:
00187   vtkSweptSurface();
00188   ~vtkSweptSurface();
00189 
00190   void Execute();
00191   void ExecuteInformation();
00192 
00193   void ComputeBounds(float origin[3], float ar[3], float bbox[24]);
00194   int ComputeNumberOfSteps(vtkTransform *t1, vtkTransform *t2, float bbox[24]);
00195   void SampleInput(vtkMatrix4x4 *m, int inDim[3], float inOrigin[3],
00196                    float inAr[3], vtkDataArray *in, vtkDataArray *out);
00197   void ComputeFootprint (vtkMatrix4x4 *m, int inDim[3], float inOrigin[3],
00198                          float inSpacing[3], int Indicies[6]);
00199   void Cap(vtkDataArray *s);
00200   void GetRelativePosition(vtkTransform &t, float *origin, float *position);
00201   vtkMatrix4x4* GetActorMatrixPointer(vtkTransform &t,
00202                                       float origin[3],
00203                                      float position[3], float orientation[3]);
00204   virtual void InterpolateStates(float *pos1, float *pos2, float *euler1, 
00205                                  float *euler2, float t, float *posOut,
00206                                  float *eulerOut);
00207 
00208   int SampleDimensions[3];
00209   float FillValue;
00210   float ModelBounds[6];
00211   int NumberOfInterpolationSteps;
00212   int MaximumNumberOfInterpolationSteps;
00213   int Capping;
00214   int AdjustBounds;
00215   float AdjustDistance;
00216 
00217   vtkTransformCollection *Transforms;
00218 
00219 private:
00220   //used to perform computations
00221   vtkTransform *T;
00222 private:
00223   vtkSweptSurface(const vtkSweptSurface&);  // Not implemented.
00224   void operator=(const vtkSweptSurface&);  // Not implemented.
00225 };
00226 
00227 #endif

Generated on Thu Mar 28 14:19:31 2002 for VTK by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001