Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkAMRBox.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkAMRBox.h,v $
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 =========================================================================*/
00029 #ifndef __vtkAMRBox_h
00030 #define __vtkAMRBox_h
00031 
00032 #include "vtkObject.h"
00033 
00034 class VTK_FILTERING_EXPORT vtkAMRBox
00035 {
00036 public:
00037   // public for quick access
00038   int LoCorner[3];
00039   int HiCorner[3];
00040 
00041   vtkAMRBox() 
00042     {
00043       for(int i=0; i<3; i++)
00044         {
00045         this->LoCorner[i] = this->HiCorner[i] = 0;
00046         }
00047     }
00048 
00049   vtkAMRBox(int dimensionality, int* loCorner, int* hiCorner) 
00050     {
00051       this->LoCorner[2] = this->HiCorner[2] = 0;
00052       memcpy(this->LoCorner, loCorner, dimensionality*sizeof(int));
00053       memcpy(this->HiCorner, hiCorner, dimensionality*sizeof(int));
00054     }
00055     
00057 
00059   vtkIdType GetNumberOfCells()
00060     {
00061       vtkIdType numCells=1;
00062       for(int i=0; i<3; i++)
00063         {
00064         numCells *= HiCorner[i] - LoCorner[i] + 1;
00065         }
00066       return numCells;
00067     }
00069 
00071 
00073   void Coarsen(int refinement)
00074     {
00075       for (int i=0; i<3; i++)
00076         {
00077         this->LoCorner[i] = 
00078           ( this->LoCorner[i] < 0 ? 
00079             -abs(this->LoCorner[i]+1)/refinement - 1 :
00080             this->LoCorner[i]/refinement );
00081         this->HiCorner[i] = 
00082           ( this->HiCorner[i] < 0 ? 
00083             -abs(this->HiCorner[i]+1)/refinement - 1 :
00084             this->HiCorner[i]/refinement );
00085         }
00086     }
00088 
00090 
00092   void Refine(int refinement)
00093     {
00094       for (int i=0; i<3; i++)
00095         {
00096         this->LoCorner[i] = this->LoCorner[i]*refinement;
00097         this->HiCorner[i] = this->HiCorner[i]*refinement;
00098         }
00099     }
00101 
00103 
00104   int DoesContainCell(int i, int j, int k)
00105     {
00106       return 
00107         i >= this->LoCorner[0] && i <= this->HiCorner[0] &&
00108         j >= this->LoCorner[1] && j <= this->HiCorner[1] &&
00109         k >= this->LoCorner[2] && k <= this->HiCorner[2];
00110     }
00112 
00113 };
00114 
00115 #endif
00116 
00117 
00118 
00119 
00120 
00121 

Generated on Mon Jan 21 23:07:18 2008 for VTK by  doxygen 1.4.3-20050530