VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkBoxClipDataSet.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 =========================================================================*/ 00015 /*---------------------------------------------------------------------------- 00016 Copyright (c) Sandia Corporation 00017 See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details. 00018 ----------------------------------------------------------------------------*/ 00019 00050 #ifndef __vtkBoxClipDataSet_h 00051 #define __vtkBoxClipDataSet_h 00052 00053 #include "vtkUnstructuredGridAlgorithm.h" 00054 00055 class vtkCell3D; 00056 class vtkCellArray; 00057 class vtkCellData; 00058 class vtkDataArray; 00059 class vtkDataSetAttributes; 00060 class vtkIdList; 00061 class vtkGenericCell; 00062 class vtkPointData; 00063 class vtkIncrementalPointLocator; 00064 class vtkPoints; 00065 00066 class VTK_GRAPHICS_EXPORT vtkBoxClipDataSet : public vtkUnstructuredGridAlgorithm 00067 { 00068 public: 00069 vtkTypeMacro(vtkBoxClipDataSet,vtkUnstructuredGridAlgorithm); 00070 void PrintSelf(ostream& os, vtkIndent indent); 00071 00075 static vtkBoxClipDataSet *New(); 00076 00078 00081 void SetBoxClip(double xmin, double xmax, 00082 double ymin, double ymax, 00083 double zmin, double zmax); 00084 void SetBoxClip(const double *n0, const double *o0, 00085 const double *n1, const double *o1, 00086 const double *n2, const double *o2, 00087 const double *n3, const double *o3, 00088 const double *n4, const double *o4, 00089 const double *n5, const double *o5); 00091 00092 00094 00096 vtkSetMacro(GenerateClipScalars,int); 00097 vtkGetMacro(GenerateClipScalars,int); 00098 vtkBooleanMacro(GenerateClipScalars,int); 00100 00102 00104 vtkSetMacro(GenerateClippedOutput,int); 00105 vtkGetMacro(GenerateClippedOutput,int); 00106 vtkBooleanMacro(GenerateClippedOutput,int); 00108 00118 vtkUnstructuredGrid *GetClippedOutput(); 00119 virtual int GetNumberOfOutputs(); 00121 00123 00125 void SetLocator(vtkIncrementalPointLocator *locator); 00126 vtkGetObjectMacro(Locator,vtkIncrementalPointLocator); 00128 00131 void CreateDefaultLocator(); 00132 00134 unsigned long GetMTime(); 00135 00137 00139 vtkGetMacro(Orientation,unsigned int); 00140 vtkSetMacro(Orientation,unsigned int); 00142 00143 00144 static void InterpolateEdge(vtkDataSetAttributes *attributes, 00145 vtkIdType toId, 00146 vtkIdType fromId1, vtkIdType fromId2, 00147 double t); 00148 00149 void MinEdgeF(const unsigned int *id_v, const vtkIdType *cellIds, 00150 unsigned int *edgF ); 00151 void PyramidToTetra(const vtkIdType *pyramId, const vtkIdType *cellIds, 00152 vtkCellArray *newCellArray); 00153 void WedgeToTetra(const vtkIdType *wedgeId, const vtkIdType *cellIds, 00154 vtkCellArray *newCellArray); 00155 void CellGrid(vtkIdType typeobj, vtkIdType npts, const vtkIdType *cellIds, 00156 vtkCellArray *newCellArray); 00157 void CreateTetra(vtkIdType npts, const vtkIdType *cellIds, 00158 vtkCellArray *newCellArray); 00159 void ClipBox(vtkPoints *newPoints,vtkGenericCell *cell, 00160 vtkIncrementalPointLocator *locator, vtkCellArray *tets,vtkPointData *inPD, 00161 vtkPointData *outPD,vtkCellData *inCD,vtkIdType cellId, 00162 vtkCellData *outCD); 00163 void ClipHexahedron(vtkPoints *newPoints, vtkGenericCell *cell, 00164 vtkIncrementalPointLocator *locator, vtkCellArray *tets, 00165 vtkPointData *inPD, vtkPointData *outPD, 00166 vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD); 00167 void ClipBoxInOut(vtkPoints *newPoints, vtkGenericCell *cell, 00168 vtkIncrementalPointLocator *locator, vtkCellArray **tets, 00169 vtkPointData *inPD, vtkPointData *outPD, 00170 vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD); 00171 void ClipHexahedronInOut(vtkPoints *newPoints,vtkGenericCell *cell, 00172 vtkIncrementalPointLocator *locator, vtkCellArray **tets, 00173 vtkPointData *inPD, vtkPointData *outPD, 00174 vtkCellData *inCD, vtkIdType cellId, 00175 vtkCellData **outCD); 00176 00177 void ClipBox2D(vtkPoints *newPoints, vtkGenericCell *cell, 00178 vtkIncrementalPointLocator *locator, vtkCellArray *tets, 00179 vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, 00180 vtkIdType cellId, vtkCellData *outCD); 00181 void ClipBoxInOut2D(vtkPoints *newPoints,vtkGenericCell *cell, 00182 vtkIncrementalPointLocator *locator, vtkCellArray **tets, 00183 vtkPointData *inPD, vtkPointData *outPD, 00184 vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD); 00185 void ClipHexahedron2D(vtkPoints *newPoints,vtkGenericCell *cell, 00186 vtkIncrementalPointLocator *locator, vtkCellArray *tets, 00187 vtkPointData *inPD, vtkPointData *outPD, 00188 vtkCellData *inCD, vtkIdType cellId, 00189 vtkCellData *outCD); 00190 void ClipHexahedronInOut2D(vtkPoints *newPoints, vtkGenericCell *cell, 00191 vtkIncrementalPointLocator *locator, vtkCellArray **tets, 00192 vtkPointData *inPD, vtkPointData *outPD, 00193 vtkCellData *inCD,vtkIdType cellId, 00194 vtkCellData **outCD); 00195 00196 void ClipBox1D(vtkPoints *newPoints, vtkGenericCell *cell, 00197 vtkIncrementalPointLocator *locator, vtkCellArray *lines, 00198 vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, 00199 vtkIdType cellId, vtkCellData *outCD); 00200 void ClipBoxInOut1D(vtkPoints *newPoints, vtkGenericCell *cell, 00201 vtkIncrementalPointLocator *locator, vtkCellArray **lines, 00202 vtkPointData *inPD, vtkPointData *outPD, 00203 vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD); 00204 void ClipHexahedron1D(vtkPoints *newPoints, vtkGenericCell *cell, 00205 vtkIncrementalPointLocator *locator, vtkCellArray *lines, 00206 vtkPointData *inPD, vtkPointData *outPD, 00207 vtkCellData *inCD, vtkIdType cellId, 00208 vtkCellData *outCD); 00209 void ClipHexahedronInOut1D(vtkPoints *newPoints, vtkGenericCell *cell, 00210 vtkIncrementalPointLocator *locator, vtkCellArray **lines, 00211 vtkPointData *inPD, vtkPointData *outPD, 00212 vtkCellData *inCD, vtkIdType cellId, 00213 vtkCellData **outCD); 00214 00215 void ClipBox0D(vtkGenericCell *cell, 00216 vtkIncrementalPointLocator *locator, vtkCellArray *verts, 00217 vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, 00218 vtkIdType cellId, vtkCellData *outCD); 00219 void ClipBoxInOut0D(vtkGenericCell *cell, 00220 vtkIncrementalPointLocator *locator, vtkCellArray **verts, 00221 vtkPointData *inPD, vtkPointData *outPD, 00222 vtkCellData *inCD, 00223 vtkIdType cellId, vtkCellData **outCD); 00224 void ClipHexahedron0D(vtkGenericCell *cell, 00225 vtkIncrementalPointLocator *locator, vtkCellArray *verts, 00226 vtkPointData *inPD, vtkPointData *outPD, 00227 vtkCellData *inCD, 00228 vtkIdType cellId, vtkCellData *outCD); 00229 void ClipHexahedronInOut0D(vtkGenericCell *cell, 00230 vtkIncrementalPointLocator *locator, vtkCellArray **verts, 00231 vtkPointData *inPD, vtkPointData *outPD, 00232 vtkCellData *inCD, 00233 vtkIdType cellId, vtkCellData **outCD); 00234 protected: 00235 vtkBoxClipDataSet(); 00236 ~vtkBoxClipDataSet(); 00237 00238 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00239 virtual int FillInputPortInformation(int port, vtkInformation *info); 00240 00241 vtkIncrementalPointLocator *Locator; 00242 int GenerateClipScalars; 00243 00244 int GenerateClippedOutput; 00245 00246 //double MergeTolerance; 00247 00248 double BoundBoxClip[3][2]; 00249 unsigned int Orientation; 00250 double PlaneNormal[6][3]; //normal of each plane 00251 double PlanePoint[6][3]; //point on the plane 00252 00253 private: 00254 vtkBoxClipDataSet(const vtkBoxClipDataSet&); // Not implemented. 00255 void operator=(const vtkBoxClipDataSet&); // Not implemented. 00256 }; 00257 00258 #endif