Carna  Version 3.3.2
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
Carna::base::BufferedIntensityVolume< VoxelType, BufferType > Class Template Reference

Implements IntensityVolume generically for a particular VoxelType. More...

#include <BufferedIntensityVolume.h>

+ Inheritance diagram for Carna::base::BufferedIntensityVolume< VoxelType, BufferType >:
+ Collaboration diagram for Carna::base::BufferedIntensityVolume< VoxelType, BufferType >:

Public Types

typedef BufferType Buffer
 Holds the used buffer type.
 
typedef VoxelType Voxel
 Holds the type used to store the value of a single voxel.
 
- Public Types inherited from Carna::base::math::VectorField< float >
typedef float Value
 Holds the co-domain type of the vector field.
 

Public Member Functions

 BufferedIntensityVolume (const math::Vector3ui &size, Association< BufferType > *buffer)
 Instantiates \(D \to \left[0, 1\right]\) with \(D = [0, s_x) \times [0, s_y) \times [0, s_z)\), where \(s_x, s_y, s_z\) is size. More...
 
 BufferedIntensityVolume (const math::Vector3ui &size)
 
float operator() (unsigned int x, unsigned int y, unsigned int z) const
 Returns intensity of specified voxel.
 
float operator() (const math::Vector3ui &at) const
 
void setVoxel (unsigned int x, unsigned int y, unsigned int z, float intensity)
 Sets the HUV of a voxel.
 
void setVoxel (const math::Vector3ui &at, float intensity)
 
BufferType & buffer ()
 References the underlying buffer.
 
const BufferType & buffer () const
 References the underlying buffer.
 
- Public Member Functions inherited from Carna::base::IntensityVolume
 IntensityVolume ()
 Instantiates.
 
 IntensityVolume (const math::Vector3ui &size)
 Instantiates.
 
- Public Member Functions inherited from Carna::base::math::VectorField< float >
virtual ~VectorField ()
 Does nothing.
 

Static Public Member Functions

static float bufferValueToIntensity (VoxelType bufferValue)
 Returns the intensity value corresponding to bufferValue.
 
static VoxelType intensityToBufferValue (float intensity)
 Returns the buffer value corresponding to an intensity.
 

Protected Attributes

const std::unique_ptr< Association< BufferType > > myBuffer
 Holds the underlying buffer. More...
 

Additional Inherited Members

- Public Attributes inherited from Carna::base::IntensityVolume
math::Vector3ui size
 Holds the resolution.
 

Detailed Description

template<typename VoxelType, typename BufferType>
class Carna::base::BufferedIntensityVolume< VoxelType, BufferType >

Implements IntensityVolume generically for a particular VoxelType.

Parameters
VoxelTypeis the data type used to store the value of a single voxel.
BufferTypeis the data type used as voxel container.
Author
Leonid Kostrykin
Date
June 2021
Since
API Version 3.2.0

Definition at line 42 of file BufferedIntensityVolume.h.

Constructor & Destructor Documentation

◆ BufferedIntensityVolume() [1/2]

template<typename VoxelType , typename BufferType >
Carna::base::BufferedIntensityVolume< VoxelType, BufferType >::BufferedIntensityVolume ( const math::Vector3ui size,
Association< BufferType > *  buffer 
)
inline

Instantiates \(D \to \left[0, 1\right]\) with \(D = [0, s_x) \times [0, s_y) \times [0, s_z)\), where \(s_x, s_y, s_z\) is size.

Precondition
buffer != nullptr && buffer->get() != nullptr
(**buffer).size() >= size.x * size.y * size.z

Definition at line 65 of file BufferedIntensityVolume.h.

◆ BufferedIntensityVolume() [2/2]

template<typename VoxelType , typename BufferType >
Carna::base::BufferedIntensityVolume< VoxelType, BufferType >::BufferedIntensityVolume ( const math::Vector3ui size)
inlineexplicit

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 74 of file BufferedIntensityVolume.h.

Member Function Documentation

◆ operator()()

template<typename VoxelType , typename BufferType >
float Carna::base::BufferedIntensityVolume< VoxelType, BufferType >::operator() ( const math::Vector3ui at) const
inlinevirtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Implements Carna::base::IntensityVolume.

Definition at line 114 of file BufferedIntensityVolume.h.

◆ setVoxel()

template<typename VoxelType , typename BufferType >
void Carna::base::BufferedIntensityVolume< VoxelType, BufferType >::setVoxel ( const math::Vector3ui at,
float  intensity 
)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 131 of file BufferedIntensityVolume.h.

Member Data Documentation

◆ myBuffer

template<typename VoxelType , typename BufferType >
const std::unique_ptr< Association< BufferType > > Carna::base::BufferedIntensityVolume< VoxelType, BufferType >::myBuffer
protected

Holds the underlying buffer.

The voxels are written \(x\)- \(y\)-plane wise, each plane \(x\)-row wise. To compute the index of some voxel \(\left(x, y, z\right)\), use the following computation rule:

\[ x + \mathrm{width} \cdot y + \mathrm{height} \cdot \mathrm{width} \cdot z \]

Definition at line 163 of file BufferedIntensityVolume.h.


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