PolyVox  0.3.0-dev
Open source voxel management library
Classes | Public Member Functions | Protected Member Functions | List of all members
PolyVox::SimpleVolume< VoxelType > Class Template Reference

#include <SimpleVolume.h>

+ Inheritance diagram for PolyVox::SimpleVolume< VoxelType >:
+ Collaboration diagram for PolyVox::SimpleVolume< VoxelType >:

Classes

class  Block
 
class  Sampler
 

Public Member Functions

 SimpleVolume (const Region &regValid, uint16_t uBlockSideLength=32)
 Constructor for creating a fixed size volume.
 
 ~SimpleVolume ()
 Destructor.
 
VoxelType getVoxel (int32_t uXPos, int32_t uYPos, int32_t uZPos) const
 Gets a voxel at the position given by x,y,z coordinates.
 
VoxelType getVoxel (const Vector3DInt32 &v3dPos) const
 Gets a voxel at the position given by a 3D vector.
 
VoxelType getVoxelAt (int32_t uXPos, int32_t uYPos, int32_t uZPos) const
 Gets a voxel at the position given by x,y,z coordinates.
 
VoxelType getVoxelAt (const Vector3DInt32 &v3dPos) const
 Gets a voxel at the position given by a 3D vector.
 
VoxelType getVoxelWithWrapping (int32_t uXPos, int32_t uYPos, int32_t uZPos, WrapMode eWrapMode=WrapModes::Border, VoxelType tBorder=VoxelType()) const
 Gets a voxel at the position given by x,y,z coordinates.
 
VoxelType getVoxelWithWrapping (const Vector3DInt32 &v3dPos, WrapMode eWrapMode=WrapModes::Border, VoxelType tBorder=VoxelType()) const
 Gets a voxel at the position given by a 3D vector.
 
bool setVoxelAt (int32_t uXPos, int32_t uYPos, int32_t uZPos, VoxelType tValue)
 Sets the voxel at the position given by x,y,z coordinates.
 
bool setVoxelAt (const Vector3DInt32 &v3dPos, VoxelType tValue)
 Sets the voxel at the position given by a 3D vector.
 
uint32_t calculateSizeInBytes (void)
 Calculates approximatly how many bytes of memory the volume is currently using.
 
- Public Member Functions inherited from PolyVox::BaseVolume< VoxelType >
VoxelType getBorderValue (void) const
 Gets the value used for voxels which are outside the volume.
 
const RegiongetEnclosingRegion (void) const
 Gets a Region representing the extents of the Volume.
 
int32_t getWidth (void) const
 Gets the width of the volume in voxels.
 
int32_t getHeight (void) const
 Gets the height of the volume in voxels.
 
int32_t getDepth (void) const
 Gets the depth of the volume in voxels.
 
int32_t getLongestSideLength (void) const
 Gets the length of the longest side in voxels.
 
int32_t getShortestSideLength (void) const
 Gets the length of the shortest side in voxels.
 
float getDiagonalLength (void) const
 Gets the length of the diagonal in voxels.
 
VoxelType getVoxel (int32_t uXPos, int32_t uYPos, int32_t uZPos) const
 Gets a voxel at the position given by x,y,z coordinates.
 
VoxelType getVoxel (const Vector3DInt32 &v3dPos) const
 Gets a voxel at the position given by a 3D vector.
 
VoxelType getVoxelAt (int32_t uXPos, int32_t uYPos, int32_t uZPos) const
 Gets a voxel at the position given by x,y,z coordinates.
 
VoxelType getVoxelAt (const Vector3DInt32 &v3dPos) const
 Gets a voxel at the position given by a 3D vector.
 
VoxelType getVoxelWithWrapping (int32_t uXPos, int32_t uYPos, int32_t uZPos, WrapMode eWrapMode=WrapModes::Border, VoxelType tBorder=VoxelType()) const
 Gets a voxel at the position given by x,y,z coordinates.
 
VoxelType getVoxelWithWrapping (const Vector3DInt32 &v3dPos, WrapMode eWrapMode=WrapModes::Border, VoxelType tBorder=VoxelType()) const
 Gets a voxel at the position given by a 3D vector.
 
void setBorderValue (const VoxelType &tBorder)
 Sets the value used for voxels which are outside the volume.
 
bool setVoxelAt (int32_t uXPos, int32_t uYPos, int32_t uZPos, VoxelType tValue)
 Sets the voxel at the position given by x,y,z coordinates.
 
bool setVoxelAt (const Vector3DInt32 &v3dPos, VoxelType tValue)
 Sets the voxel at the position given by a 3D vector.
 
uint32_t calculateSizeInBytes (void)
 Calculates approximatly how many bytes of memory the volume is currently using.
 

Protected Member Functions

 SimpleVolume (const SimpleVolume &rhs)
 Copy constructor.
 
SimpleVolumeoperator= (const SimpleVolume &rhs)
 Assignment operator.
 
- Protected Member Functions inherited from PolyVox::BaseVolume< VoxelType >
 BaseVolume (const Region &regValid)
 Constructor for creating a fixed size volume.
 
 BaseVolume (const BaseVolume &rhs)
 Copy constructor.
 
 ~BaseVolume ()
 Destructor.
 
BaseVolumeoperator= (const BaseVolume &rhs)
 Assignment operator.
 

Additional Inherited Members

- Public Types inherited from PolyVox::BaseVolume< VoxelType >
typedef VoxelType VoxelType
 
- Protected Attributes inherited from PolyVox::BaseVolume< VoxelType >
Region m_regValidRegion
 
int32_t m_uLongestSideLength
 
int32_t m_uShortestSideLength
 
float m_fDiagonalLength
 
VoxelType m_tBorderValue
 

Detailed Description

template<typename VoxelType>
class PolyVox::SimpleVolume< VoxelType >

Definition at line 43 of file SimpleVolume.h.

Constructor & Destructor Documentation

template<typename VoxelType >
SimpleVolume< VoxelType >::SimpleVolume ( const Region regValid,
uint16_t  uBlockSideLength = 32 
)

Constructor for creating a fixed size volume.

This constructor creates a volume with a fixed size which is specified as a parameter.

Parameters
regValidSpecifies the minimum and maximum valid voxel positions.
uBlockSideLengthThe size of the block to use within the volume

Definition at line 34 of file SimpleVolume.inl.

template<typename VoxelType >
SimpleVolume< VoxelType >::~SimpleVolume ( )

Destructor.

Destroys the volume.

Definition at line 58 of file SimpleVolume.inl.

template<typename VoxelType >
SimpleVolume< VoxelType >::SimpleVolume ( const SimpleVolume< VoxelType > &  rhs)
protected

Copy constructor.

This function should never be called.

Copying volumes by value would be expensive, and we want to prevent users from doing it by accident (such as when passing them as paramenters to functions). That said, there are times when you really do want to make a copy of a volume and in this case you should look at the Volumeresampler.

See Also
VolumeResampler

Definition at line 49 of file SimpleVolume.inl.

Member Function Documentation

template<typename VoxelType >
uint32_t SimpleVolume< VoxelType >::calculateSizeInBytes ( void  )

Calculates approximatly how many bytes of memory the volume is currently using.

Todo:
This function needs reviewing for accuracy...
Returns
The number of bytes used

Definition at line 331 of file SimpleVolume.inl.

template<typename VoxelType >
VoxelType SimpleVolume< VoxelType >::getVoxel ( int32_t  uXPos,
int32_t  uYPos,
int32_t  uZPos 
) const

Gets a voxel at the position given by x,y,z coordinates.

Parameters
uXPosThe x position of the voxel
uYPosThe y position of the voxel
uZPosThe z position of the voxel
Returns
The voxel value

Definition at line 83 of file SimpleVolume.inl.

Referenced by PolyVox::SimpleVolume< VoxelType >::Sampler::getSubSampledVoxel().

+ Here is the call graph for this function:

template<typename VoxelType >
VoxelType SimpleVolume< VoxelType >::getVoxel ( const Vector3DInt32 v3dPos) const

Gets a voxel at the position given by a 3D vector.

Parameters
v3dPosThe 3D position of the voxel
Returns
The voxel value

Definition at line 105 of file SimpleVolume.inl.

+ Here is the call graph for this function:

template<typename VoxelType >
VoxelType SimpleVolume< VoxelType >::getVoxelAt ( int32_t  uXPos,
int32_t  uYPos,
int32_t  uZPos 
) const

Gets a voxel at the position given by x,y,z coordinates.

Parameters
uXPosThe x position of the voxel
uYPosThe y position of the voxel
uZPosThe z position of the voxel
Returns
The voxel value

Definition at line 117 of file SimpleVolume.inl.

Referenced by PolyVox::SimpleVolume< VoxelType >::Sampler::getVoxel(), and PolyVox::SimpleVolume< VoxelType >::Block::getVoxelAt().

+ Here is the call graph for this function:

template<typename VoxelType >
VoxelType SimpleVolume< VoxelType >::getVoxelAt ( const Vector3DInt32 v3dPos) const

Gets a voxel at the position given by a 3D vector.

Parameters
v3dPosThe 3D position of the voxel
Returns
The voxel value

Definition at line 144 of file SimpleVolume.inl.

+ Here is the call graph for this function:

template<typename VoxelType >
VoxelType SimpleVolume< VoxelType >::getVoxelWithWrapping ( int32_t  uXPos,
int32_t  uYPos,
int32_t  uZPos,
WrapMode  eWrapMode = WrapModes::Border,
VoxelType  tBorder = VoxelType() 
) const

Gets a voxel at the position given by x,y,z coordinates.

Parameters
uXPosThe x position of the voxel
uYPosThe y position of the voxel
uZPosThe z position of the voxel
Returns
The voxel value

Definition at line 156 of file SimpleVolume.inl.

template<typename VoxelType >
VoxelType SimpleVolume< VoxelType >::getVoxelWithWrapping ( const Vector3DInt32 v3dPos,
WrapMode  eWrapMode = WrapModes::Border,
VoxelType  tBorder = VoxelType() 
) const

Gets a voxel at the position given by a 3D vector.

Parameters
v3dPosThe 3D position of the voxel
Returns
The voxel value

Definition at line 200 of file SimpleVolume.inl.

+ Here is the call graph for this function:

template<typename VoxelType >
SimpleVolume< VoxelType > & SimpleVolume< VoxelType >::operator= ( const SimpleVolume< VoxelType > &  rhs)
protected

Assignment operator.

This function should never be called.

Copying volumes by value would be expensive, and we want to prevent users from doing it by accident (such as when passing them as paramenters to functions). That said, there are times when you really do want to make a copy of a volume and in this case you should look at the Volumeresampler.

See Also
VolumeResampler

Definition at line 71 of file SimpleVolume.inl.

template<typename VoxelType >
bool SimpleVolume< VoxelType >::setVoxelAt ( int32_t  uXPos,
int32_t  uYPos,
int32_t  uZPos,
VoxelType  tValue 
)

Sets the voxel at the position given by x,y,z coordinates.

Parameters
uXPosthe x position of the voxel
uYPosthe y position of the voxel
uZPosthe z position of the voxel
tValuethe value to which the voxel will be set
Returns
whether the requested position is inside the volume

Definition at line 213 of file SimpleVolume.inl.

Referenced by PolyVox::SimpleVolume< VoxelType >::Block::setVoxelAt().

template<typename VoxelType >
bool SimpleVolume< VoxelType >::setVoxelAt ( const Vector3DInt32 v3dPos,
VoxelType  tValue 
)

Sets the voxel at the position given by a 3D vector.

Parameters
v3dPosthe 3D position of the voxel
tValuethe value to which the voxel will be set
Returns
whether the requested position is inside the volume

Definition at line 239 of file SimpleVolume.inl.

+ Here is the call graph for this function:


The documentation for this class was generated from the following files: