vtkMimxSplitUnstructuredHexahedronGridCell.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003 Program:   MIMX Meshing Toolkit
00004 Module:    $RCSfile: vtkMimxSplitUnstructuredHexahedronGridCell.h,v $
00005 Language:  C++
00006 Date:      $Date: 2007/11/09 21:09:25 $
00007 Version:   $Revision: 1.8 $
00008 
00009  Musculoskeletal Imaging, Modelling and Experimentation (MIMX)
00010  Center for Computer Aided Design
00011  The University of Iowa
00012  Iowa City, IA 52242
00013  http://www.ccad.uiowa.edu/mimx/
00014  
00015 Copyright (c) The University of Iowa. All rights reserved.
00016 See MIMXCopyright.txt or http://www.ccad.uiowa.edu/mimx/Copyright.htm for details.
00017 
00018 This software is distributed WITHOUT ANY WARRANTY; without even 
00019 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00020 PURPOSE.  See the above copyright notices for more information.
00021 
00022 =========================================================================*/
00023 
00024 // .NAME vtkMimxSplitUnstructuredHexahedronGridCell - 
00025 // .SECTION Caveats
00026 // Filter takes in an unstructuredgrid as primary input. PointsList input
00027 // should contain two points denoting an edge in the unstructured grid.
00028 // the output contains unstructured grid with the cell containing the edge
00029 // split in half.
00030 
00031 #ifndef __vtkMimxSplitUnstructuredHexahedronGridCell_h
00032 #define __vtkMimxSplitUnstructuredHexahedronGridCell_h
00033 
00034 #include "vtkUnstructuredGridAlgorithm.h"
00035 #include "mimxMatrixTemplate.h"
00036 #include "mimxLinkedList.h"
00037 #include "vtkMimxFilterWin32Header.h"
00038 
00039 class vtkIdList;
00040 
00041 
00042 class VTK_MIMXFILTER_EXPORT vtkMimxSplitUnstructuredHexahedronGridCell : public vtkUnstructuredGridAlgorithm
00043 {
00044 public:
00045 
00046   static vtkMimxSplitUnstructuredHexahedronGridCell *New();
00047   vtkTypeRevisionMacro(vtkMimxSplitUnstructuredHexahedronGridCell,vtkUnstructuredGridAlgorithm);
00048   void PrintSelf(ostream& os, vtkIndent indent);
00049   vtkSetMacro(IdList, vtkIdList*);
00050 protected:
00051   vtkMimxSplitUnstructuredHexahedronGridCell();
00052   ~vtkMimxSplitUnstructuredHexahedronGridCell();
00053   vtkIdList *IdList;
00054   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00055   void BuildMeshSeedLinks(int CellNum, int EdgeNum);
00056   void GetCellNeighbors(vtkIdType, vtkIdList*); // get cell neighbors that have not
00057   // been traversed
00058   int CheckIfCellsShareEdgeX(int , int , int);
00059   int CheckIfCellsShareEdgeY(int , int , int);
00060   int CheckIfCellsShareEdgeZ(int , int , int);
00061   void EstimateMeshSeedsBasedOnAverageElementLength(double);
00062   //    the common edge could be x, y, z on the cell being compared
00063   int WhichEdgeOfCellBeingCompared(vtkIdType, vtkIdType);
00064   // mesh seed links
00065   // size is determined by numberofcells in the unstructuredgrid*3
00066   // matrix to store cell connectivity information
00067   CMatrix<int> MeshSeedLinks;
00068   // matrix for book keeping on cell neighbors visited
00069   CMatrix<int> MeshSeedCheck;
00070   void CopyConstraintValues(
00071           vtkUnstructuredGrid *input, vtkUnstructuredGrid *output);
00072   private:
00073   vtkMimxSplitUnstructuredHexahedronGridCell(const vtkMimxSplitUnstructuredHexahedronGridCell&);  // Not implemented.
00074   void operator=(const vtkMimxSplitUnstructuredHexahedronGridCell&);  // Not implemented.
00075 };
00076 
00077 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1