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

#include <BaseVolume.h>

+ Inheritance diagram for PolyVox::BaseVolume< _VoxelType >:
+ Collaboration diagram for PolyVox::BaseVolume< _VoxelType >:

Classes

class  Sampler
 

Public Types

typedef _VoxelType VoxelType
 

Public Member Functions

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

 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.
 

Protected Attributes

Region m_regValidRegion
 
int32_t m_uLongestSideLength
 
int32_t m_uShortestSideLength
 
float m_fDiagonalLength
 
VoxelType m_tBorderValue
 

Detailed Description

template<typename _VoxelType>
class PolyVox::BaseVolume< _VoxelType >

Definition at line 51 of file BaseVolume.h.

Member Typedef Documentation

template<typename _VoxelType>
typedef _VoxelType PolyVox::BaseVolume< _VoxelType >::VoxelType

Definition at line 54 of file BaseVolume.h.

Constructor & Destructor Documentation

template<typename VoxelType >
PolyVox::BaseVolume< VoxelType >::BaseVolume ( const Region regValid)
protected

Constructor for creating a fixed size volume.

This is protected because you should never create a BaseVolume directly, you should instead use one of the derived classes.

See Also
RawVolume, SimpleVolume, LargeVolume

Definition at line 32 of file BaseVolume.inl.

template<typename VoxelType >
PolyVox::BaseVolume< VoxelType >::BaseVolume ( const BaseVolume< _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 46 of file BaseVolume.inl.

template<typename VoxelType >
PolyVox::BaseVolume< VoxelType >::~BaseVolume ( )
protected

Destructor.

Destroys the volume.

Definition at line 55 of file BaseVolume.inl.

Member Function Documentation

template<typename VoxelType >
uint32_t PolyVox::BaseVolume< VoxelType >::calculateSizeInBytes ( void  )

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

Note: This function needs reviewing for accuracy...

Definition at line 267 of file BaseVolume.inl.

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< VoxelType >::getBorderValue ( void  ) const

Gets the value used for voxels which are outside the volume.

The border value is returned whenever an attempt is made to read a voxel which is outside the extents of the volume.

Returns
The value used for voxels outside of the volume

Definition at line 78 of file BaseVolume.inl.

template<typename VoxelType >
int32_t PolyVox::BaseVolume< VoxelType >::getDepth ( void  ) const

Gets the depth of the volume in voxels.

Returns
The depth of the volume in voxels. Note that this value is inclusive, so that if the valid range is e.g. 0 to 63 then the depth is 64.
See Also
getWidth(), getHeight()

Definition at line 117 of file BaseVolume.inl.

template<typename VoxelType >
float PolyVox::BaseVolume< VoxelType >::getDiagonalLength ( void  ) const

Gets the length of the diagonal in voxels.

Returns
The length of the diagonal in voxels. For example, if a volume has dimensions 256x512x1024 this function will return sqrt(256*256+512*512+1024*1024) = 1173.139. This value is computed on volume creation so retrieving it is fast.
See Also
getShortestSideLength(), getLongestSideLength()

Definition at line 151 of file BaseVolume.inl.

template<typename VoxelType >
const Region & PolyVox::BaseVolume< VoxelType >::getEnclosingRegion ( void  ) const
template<typename VoxelType >
int32_t PolyVox::BaseVolume< VoxelType >::getHeight ( void  ) const

Gets the height of the volume in voxels.

Returns
The height of the volume in voxels. Note that this value is inclusive, so that if the valid range is e.g. 0 to 63 then the height is 64.
See Also
getWidth(), getDepth()

Definition at line 107 of file BaseVolume.inl.

template<typename VoxelType >
int32_t PolyVox::BaseVolume< VoxelType >::getLongestSideLength ( void  ) const

Gets the length of the longest side in voxels.

Returns
The length of the longest side in voxels. For example, if a volume has dimensions 256x512x1024 this function will return 1024.
See Also
getShortestSideLength(), getDiagonalLength()

Definition at line 139 of file BaseVolume.inl.

template<typename VoxelType >
int32_t PolyVox::BaseVolume< VoxelType >::getShortestSideLength ( void  ) const

Gets the length of the shortest side in voxels.

Returns
The length of the shortest side in voxels. For example, if a volume has dimensions 256x512x1024 this function will return 256.
See Also
getLongestSideLength(), getDiagonalLength()

Definition at line 128 of file BaseVolume.inl.

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< 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 163 of file BaseVolume.inl.

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< 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 174 of file BaseVolume.inl.

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< 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 187 of file BaseVolume.inl.

Referenced by PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px0py0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px0py1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px0py1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px1ny0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px1ny1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px1ny1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px1py0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px1py1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel0px1py1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx0py0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx0py1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx0py1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx1ny0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx1ny1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx1ny1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx1py0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx1py1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1nx1py1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px0py0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px0py1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px0py1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px1ny0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px1ny1nz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px1ny1pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px1py0pz(), PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px1py1nz(), and PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::peekVoxel1px1py1pz().

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< 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 198 of file BaseVolume.inl.

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< 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 211 of file BaseVolume.inl.

template<typename VoxelType >
VoxelType PolyVox::BaseVolume< 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 222 of file BaseVolume.inl.

template<typename VoxelType >
int32_t PolyVox::BaseVolume< VoxelType >::getWidth ( void  ) const

Gets the width of the volume in voxels.

Returns
The width of the volume in voxels. Note that this value is inclusive, so that if the valid range is e.g. 0 to 63 then the width is 64.
See Also
getHeight(), getDepth()

Definition at line 97 of file BaseVolume.inl.

template<typename VoxelType >
BaseVolume< VoxelType > & PolyVox::BaseVolume< VoxelType >::operator= ( const BaseVolume< _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 67 of file BaseVolume.inl.

template<typename VoxelType >
void PolyVox::BaseVolume< VoxelType >::setBorderValue ( const VoxelType tBorder)

Sets the value used for voxels which are outside the volume.

Parameters
tBorderThe value to use for voxels outside the volume.

Definition at line 232 of file BaseVolume.inl.

template<typename VoxelType >
bool PolyVox::BaseVolume< 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 245 of file BaseVolume.inl.

Referenced by PolyVox::BaseVolume< _VoxelType >::Sampler< DerivedVolumeType >::setVoxel().

template<typename VoxelType >
bool PolyVox::BaseVolume< 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 257 of file BaseVolume.inl.

Member Data Documentation

template<typename _VoxelType>
float PolyVox::BaseVolume< _VoxelType >::m_fDiagonalLength
protected

Definition at line 192 of file BaseVolume.h.

template<typename _VoxelType>
Region PolyVox::BaseVolume< _VoxelType >::m_regValidRegion
protected

Definition at line 187 of file BaseVolume.h.

template<typename _VoxelType>
VoxelType PolyVox::BaseVolume< _VoxelType >::m_tBorderValue
protected

Definition at line 195 of file BaseVolume.h.

template<typename _VoxelType>
int32_t PolyVox::BaseVolume< _VoxelType >::m_uLongestSideLength
protected

Definition at line 190 of file BaseVolume.h.

template<typename _VoxelType>
int32_t PolyVox::BaseVolume< _VoxelType >::m_uShortestSideLength
protected

Definition at line 191 of file BaseVolume.h.


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