00001 #pragma once
00002
00003 #include "common.h"
00004
00005 #include <vector>
00006 #include "Voxel.h"
00007 #include "Matrix.h"
00008
00009
00013 class Volume
00014 {
00015
00016 public:
00017
00018 Volume();
00019 Volume( const std::string &strFilename );
00020 ~Volume(void);
00021
00022 void load( const std::string &strFilename );
00023 void release();
00024
00025
00029 const Voxel& getVoxel( const int iX, const int iY, const int iZ ) const
00030 {
00031 return m_voxels[ iX + iY*m_sizeX + iZ*m_sizeX*m_sizeY ];
00032 };
00033
00034
00035
00039 const Voxel& getVoxel(const int iIndex) const
00040 {
00041 return m_voxels[iIndex];
00042 };
00043
00044
00045
00049 const Voxel* getVolume() const
00050 {
00051 return &( m_voxels.front() );
00052 };
00053
00054
00058 const int getSizeX() const
00059 {
00060 return m_sizeX;
00061 };
00062
00063
00067 const int getSizeY() const
00068 {
00069 return m_sizeY;
00070 };
00071
00072
00076 const int getSizeZ() const
00077 {
00078 return m_sizeZ;
00079 };
00080
00081
00085 const int getSize() const
00086 {
00087 return int( m_voxels.size() );
00088 };
00089
00093 const int* getDensityDistribution () const
00094 {
00095 return m_densityArray;
00096 }
00097
00098 private:
00099 std::vector<Voxel> m_voxels;
00100
00101 int m_sizeX;
00102 int m_sizeY;
00103 int m_sizeZ;
00104
00105 int m_densityArray[DENSITY_COUNT];
00106 int m_maxDensityIndex;
00107 };
00108