00001 00011 #include "CuboidIntegerGrid3D.h" 00012 00013 CuboidIntegerGrid3D::CuboidIntegerGrid3D( size_t nx, size_t ny, size_t nz ) : 00014 Point3DSet( nx*ny*nz ), origin(0,0,0) 00015 { 00016 populate( 0, 0, 0, nx, ny, nz ); 00017 } 00018 00019 CuboidIntegerGrid3D::CuboidIntegerGrid3D( Point3D<int> const& size, Point3D<double> const& origin ) : 00020 Point3DSet( size.x() * size.y() * size.z() ), origin( origin ) 00021 { 00022 populate( (int)origin.x(), (int)origin.y(), (int)origin.z(), size.x(), size.y(), size.z() ); 00023 } 00024 00025 CuboidIntegerGrid3D::CuboidIntegerGrid3D( Volume3DSize const& size, Point3D<double> const& origin ) : 00026 Point3DSet( size.x() * size.y() * size.z() ), origin( origin ) 00027 { 00028 populate( (int)origin.x(), (int)origin.y(), (int)origin.z(), size.x(), size.y(), size.z() ); 00029 } 00030 00031 void CuboidIntegerGrid3D::populate( int ox, int oy, int oz, size_t nx, size_t ny, size_t nz ) { 00032 int x,y,z; 00033 size_t cx,cy,cz; 00034 Point3D<double> p; 00035 size_t i = 0; 00036 for( x=ox, cx=0; cx < nx; cx++, x++ ) 00037 for( y=oy, cy=0; cy < ny; cy++, y++ ) 00038 for( z=oz, cz=0; cz < nz; cz++, z++ ) { 00039 p = Point3D<double>(x,y,z); 00040 m_points[ i ] = p; 00041 lookup[ p ] = i++; 00042 } 00043 }