Patented/vtkSweptSurface.h Source File

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   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 5,542,036
    00016      "Implicit Modeling of Swept Volumes and Swept Surfaces"
    00017      Application of this software for commercial purposes requires
    00018      a license grant from GE. Contact:
    00019
    00020          Carl B. Horton
    00021          Sr. Counsel, Intellectual Property
    00022          3000 N. Grandview Blvd., W-710
    00023          Waukesha, WI  53188
    00024          Phone:  (262) 513-4022
    00025          E-Mail: Carl.Horton@med.ge.com
    00026
    00027      for more information.
    00028
    00029 =========================================================================*/
    00073 #ifndef __vtkSweptSurface_h
    00074 #define __vtkSweptSurface_h
    00075
    00076 #include "vtkImageToImageFilter.h"
    00077
    00078 class vtkDataArray;
    00079 class vtkMatrix4x4;
    00080 class vtkTransform;
    00081 class vtkTransformCollection;
    00082
    00083 class VTK_PATENTED_EXPORT vtkSweptSurface : public vtkImageToImageFilter
    00084 {
    00085 public:
    00086   static vtkSweptSurface *New();
    00087   vtkTypeRevisionMacro(vtkSweptSurface,vtkImageToImageFilter);
    00088   void PrintSelf(ostream& os, vtkIndent indent);
    00089
    00091
    00093   vtkSetVector3Macro(SampleDimensions,int);
    00094   vtkGetVectorMacro(SampleDimensions,int,3);
    00096
    00098
    00100   virtual void SetTransforms(vtkTransformCollection*);
    00101   vtkGetObjectMacro(Transforms, vtkTransformCollection);
    00103
    00105
    00108   vtkSetMacro(FillValue,float);
    00109   vtkGetMacro(FillValue,float);
    00111
    00113
    00123   vtkSetMacro(NumberOfInterpolationSteps,int);
    00124   vtkGetMacro(NumberOfInterpolationSteps,int);
    00126
    00128
    00131   vtkSetMacro(MaximumNumberOfInterpolationSteps,int);
    00132   vtkGetMacro(MaximumNumberOfInterpolationSteps,int);
    00134
    00136
    00141   vtkSetMacro(Capping,int);
    00142   vtkGetMacro(Capping,int);
    00143   vtkBooleanMacro(Capping,int);
    00145
    00147
    00152   vtkSetVectorMacro(ModelBounds,float,6);
    00153   vtkGetVectorMacro(ModelBounds,float,6);
    00154   void SetModelBounds(float xmin, float xmax, float ymin, float ymax,
    00155                       float zmin, float zmax);
    00157
    00159
    00163   vtkSetMacro(AdjustBounds,int);
    00164   vtkGetMacro(AdjustBounds,int);
    00165   vtkBooleanMacro(AdjustBounds,int);
    00167
    00169
    00172   vtkSetClampMacro(AdjustDistance,float,-1.0,1.0);
    00173   vtkGetMacro(AdjustDistance,float);
    00175
    00176   //overload to check transformation matrices
    00177   unsigned long int GetMTime();
    00178
    00179 protected:
    00180   vtkSweptSurface();
    00181   ~vtkSweptSurface();
    00182
    00183   virtual void ExecuteData(vtkDataObject *);
    00184   virtual void ExecuteInformation(vtkImageData *inData, vtkImageData *outData);
    00185   void ExecuteInformation(){
    00186     this->vtkImageToImageFilter::ExecuteInformation();};
    00187   void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
    00188
    00189   void ComputeBounds(float origin[3], float ar[3], float bbox[24]);
    00190   int ComputeNumberOfSteps(vtkTransform *t1, vtkTransform *t2, float bbox[24]);
    00191   void SampleInput(vtkMatrix4x4 *m, int inDim[3], float inOrigin[3],
    00192                    float inAr[3], vtkDataArray *in, vtkDataArray *out);
    00193   void ComputeFootprint (vtkMatrix4x4 *m, int inDim[3], float inOrigin[3],
    00194                          float inSpacing[3], int Indicies[6]);
    00195   void Cap(vtkDataArray *s);
    00196   void GetRelativePosition(vtkTransform &t, float *origin, float *position);
    00197   vtkMatrix4x4* GetActorMatrixPointer(vtkTransform &t,
    00198                                       float origin[3],
    00199                                      float position[3], float orientation[3]);
    00200   virtual void InterpolateStates(float *pos1, float *pos2, float *euler1,
    00201                                  float *euler2, float t, float *posOut,
    00202                                  float *eulerOut);
    00203
    00204   int SampleDimensions[3];
    00205   float FillValue;
    00206   float ModelBounds[6];
    00207   int NumberOfInterpolationSteps;
    00208   int MaximumNumberOfInterpolationSteps;
    00209   int Capping;
    00210   int AdjustBounds;
    00211   float AdjustDistance;
    00212
    00213   vtkTransformCollection *Transforms;
    00214
    00215 private:
    00216   //used to perform computations
    00217   vtkTransform *T;
    00218 private:
    00219   vtkSweptSurface(const vtkSweptSurface&);  // Not implemented.
    00220   void operator=(const vtkSweptSurface&);  // Not implemented.
    00221 };
    00222
    00223 #endif