VTK
dox/Graphics/vtkSelectEnclosedPoints.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkSelectEnclosedPoints.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 =========================================================================*/
00045 #ifndef __vtkSelectEnclosedPoints_h
00046 #define __vtkSelectEnclosedPoints_h
00047 
00048 #include "vtkDataSetAlgorithm.h"
00049 
00050 class vtkUnsignedCharArray;
00051 class vtkCellLocator;
00052 class vtkIdList;
00053 class vtkGenericCell;
00054 
00055 
00056 class VTK_GRAPHICS_EXPORT vtkSelectEnclosedPoints : public vtkDataSetAlgorithm
00057 {
00058 public:
00060 
00061   vtkTypeMacro(vtkSelectEnclosedPoints,vtkDataSetAlgorithm);
00062   void PrintSelf(ostream& os, vtkIndent indent);
00064 
00066   static vtkSelectEnclosedPoints *New();
00067 
00069 
00072   void SetSurface(vtkPolyData *pd);
00073   void SetSurfaceConnection(vtkAlgorithmOutput* algOutput);
00075 
00077 
00078   vtkPolyData *GetSurface();
00079   vtkPolyData *GetSurface(vtkInformationVector *sourceInfo);
00081 
00083 
00086   vtkSetMacro(InsideOut,int);
00087   vtkBooleanMacro(InsideOut,int);
00088   vtkGetMacro(InsideOut,int);
00090 
00092 
00094   vtkSetMacro(CheckSurface,int);
00095   vtkBooleanMacro(CheckSurface,int);
00096   vtkGetMacro(CheckSurface,int);
00098 
00101   int IsInside(vtkIdType inputPtId);
00102 
00104 
00106   vtkSetClampMacro(Tolerance,double,0.0,VTK_LARGE_FLOAT);
00107   vtkGetMacro(Tolerance,double);
00109 
00111 
00115   void Initialize(vtkPolyData *surface);
00116   int IsInsideSurface(double x, double y, double z);
00117   int IsInsideSurface(double x[3]);
00118   void Complete();
00120 
00121 protected:
00122   vtkSelectEnclosedPoints();
00123   ~vtkSelectEnclosedPoints();
00124 
00125   int    CheckSurface;
00126   int    InsideOut;
00127   double Tolerance;
00128 
00129   int IsSurfaceClosed(vtkPolyData *surface);
00130   vtkUnsignedCharArray *InsideOutsideArray;
00131 
00132   // Internal structures for accelerating the intersection test
00133   vtkCellLocator *CellLocator;
00134   vtkIdList      *CellIds;
00135   vtkGenericCell *Cell;
00136   vtkPolyData    *Surface;
00137   double          Bounds[6];
00138   double          Length;
00139   
00140   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00141   virtual int FillInputPortInformation(int, vtkInformation *);
00142 
00143   virtual void ReportReferences(vtkGarbageCollector*);
00144 
00145 private:
00146   vtkSelectEnclosedPoints(const vtkSelectEnclosedPoints&);  // Not implemented.
00147   void operator=(const vtkSelectEnclosedPoints&);  // Not implemented.
00148 };
00149 
00150 #endif