MeshLib C++ Docs
Loading...
Searching...
No Matches
MR::MeshOnVoxelsT< MeshType, VolumeType > Class Template Reference

#include <MRVoxels/MRMoveMeshToVoxelMaxDeriv.h>

Public Member Functions

 MeshOnVoxelsT (MeshType &mesh, const AffineXf3f &meshXf, const VolumeType &volume, const AffineXf3f &volumeXf)
 MeshOnVoxelsT (const MeshOnVoxelsT &other)
MeshType & mesh () const
 Access to base data.
const VolumeType & volume () const
int numVerts () const
 Cached number of valid vertices.
float voxelSize () const
 Voxel size as scalar.
AffineXf3f xf () const
Vector3f xf (const Vector3f &pt) const
AffineXf3f xfInv () const
Vector3f xfInv (const Vector3f &pt) const
Vector3f point (VertId v) const
 Vertex position.
float getValue (const Vector3f &pos) const
 Volume value.
Vector3f getOffsetVector (VertId v) const
 Get offset vector (mesh normal for a vertex with voxelSize length)
void getPoints (std::vector< Vector3f > &result, const Vector3f &pos, const Vector3f &offset) const
 Get row of points with offset stride.
void getValues (std::vector< float > &result, const Vector3f &pos, const Vector3f &offset) const
 Get volume values for a row of points.

Static Public Member Functions

static float pseudoIndex (float index, int count)
static float pseudoIndex (int index, int count)
static float indexFromPseudoIndex (float pseudoIndex, int count)
static void getDerivatives (std::vector< float > &result, const std::vector< float > &values)
 Get derivatives from result of getValues
static Parabolaf getBestParabola (auto begin, auto end)
 Get best fit parabola in pseudo-index space for a zero-centered array.
template<size_t degree>
static Polynomialf< degree > getBestPolynomial (const std::vector< float > &values)
static PolynomialWrapperf getBestPolynomial (const std::vector< float > &values, size_t degree)

Detailed Description

template<typename MeshType, typename VolumeType>
class MR::MeshOnVoxelsT< MeshType, VolumeType >

Helper class to organize mesh and voxels volume access and build point sequences

Note
this class is not thread-safe but accessing same volume from different instances is ok

Constructor & Destructor Documentation

◆ MeshOnVoxelsT() [1/2]

template<typename MeshType, typename VolumeType>
MR::MeshOnVoxelsT< MeshType, VolumeType >::MeshOnVoxelsT ( MeshType & mesh,
const AffineXf3f & meshXf,
const VolumeType & volume,
const AffineXf3f & volumeXf )

◆ MeshOnVoxelsT() [2/2]

template<typename MeshType, typename VolumeType>
MR::MeshOnVoxelsT< MeshType, VolumeType >::MeshOnVoxelsT ( const MeshOnVoxelsT< MeshType, VolumeType > & other)

Member Function Documentation

◆ getBestParabola()

template<typename MeshType, typename VolumeType>
Parabolaf MR::MeshOnVoxelsT< MeshType, VolumeType >::getBestParabola ( auto begin,
auto end )
inlinestatic

Get best fit parabola in pseudo-index space for a zero-centered array.

◆ getBestPolynomial() [1/2]

template<typename MeshType, typename VolumeType>
template<size_t degree>
Polynomialf< degree > MR::MeshOnVoxelsT< MeshType, VolumeType >::getBestPolynomial ( const std::vector< float > & values)
inlinestatic

◆ getBestPolynomial() [2/2]

template<typename MeshType, typename VolumeType>
PolynomialWrapperf MR::MeshOnVoxelsT< MeshType, VolumeType >::getBestPolynomial ( const std::vector< float > & values,
size_t degree )
static

◆ getDerivatives()

template<typename MeshType, typename VolumeType>
void MR::MeshOnVoxelsT< MeshType, VolumeType >::getDerivatives ( std::vector< float > & result,
const std::vector< float > & values )
static

Get derivatives from result of getValues

◆ getOffsetVector()

template<typename MeshType, typename VolumeType>
Vector3f MR::MeshOnVoxelsT< MeshType, VolumeType >::getOffsetVector ( VertId v) const

Get offset vector (mesh normal for a vertex with voxelSize length)

◆ getPoints()

template<typename MeshType, typename VolumeType>
void MR::MeshOnVoxelsT< MeshType, VolumeType >::getPoints ( std::vector< Vector3f > & result,
const Vector3f & pos,
const Vector3f & offset ) const

Get row of points with offset stride.

◆ getValue()

template<typename MeshType, typename VolumeType>
float MR::MeshOnVoxelsT< MeshType, VolumeType >::getValue ( const Vector3f & pos) const

Volume value.

◆ getValues()

template<typename MeshType, typename VolumeType>
void MR::MeshOnVoxelsT< MeshType, VolumeType >::getValues ( std::vector< float > & result,
const Vector3f & pos,
const Vector3f & offset ) const

Get volume values for a row of points.

◆ indexFromPseudoIndex()

template<typename MeshType, typename VolumeType>
float MR::MeshOnVoxelsT< MeshType, VolumeType >::indexFromPseudoIndex ( float pseudoIndex,
int count )
static

◆ mesh()

template<typename MeshType, typename VolumeType>
MeshType & MR::MeshOnVoxelsT< MeshType, VolumeType >::mesh ( ) const

Access to base data.

◆ numVerts()

template<typename MeshType, typename VolumeType>
int MR::MeshOnVoxelsT< MeshType, VolumeType >::numVerts ( ) const

Cached number of valid vertices.

◆ point()

template<typename MeshType, typename VolumeType>
Vector3f MR::MeshOnVoxelsT< MeshType, VolumeType >::point ( VertId v) const

Vertex position.

◆ pseudoIndex() [1/2]

template<typename MeshType, typename VolumeType>
float MR::MeshOnVoxelsT< MeshType, VolumeType >::pseudoIndex ( float index,
int count )
static

Get a pseudo-index for a zero-based point index in a zero-centered row of count points Pseudo-index is a signed number; for whole index, is is whole or half-whole

◆ pseudoIndex() [2/2]

template<typename MeshType, typename VolumeType>
float MR::MeshOnVoxelsT< MeshType, VolumeType >::pseudoIndex ( int index,
int count )
static

◆ volume()

template<typename MeshType, typename VolumeType>
const VolumeType & MR::MeshOnVoxelsT< MeshType, VolumeType >::volume ( ) const

◆ voxelSize()

template<typename MeshType, typename VolumeType>
float MR::MeshOnVoxelsT< MeshType, VolumeType >::voxelSize ( ) const

Voxel size as scalar.

◆ xf() [1/2]

template<typename MeshType, typename VolumeType>
AffineXf3f MR::MeshOnVoxelsT< MeshType, VolumeType >::xf ( ) const

Transformation mesh to volume All points are in voxels volume space, unless otherwise is implied

◆ xf() [2/2]

template<typename MeshType, typename VolumeType>
Vector3f MR::MeshOnVoxelsT< MeshType, VolumeType >::xf ( const Vector3f & pt) const

◆ xfInv() [1/2]

template<typename MeshType, typename VolumeType>
AffineXf3f MR::MeshOnVoxelsT< MeshType, VolumeType >::xfInv ( ) const

◆ xfInv() [2/2]

template<typename MeshType, typename VolumeType>
Vector3f MR::MeshOnVoxelsT< MeshType, VolumeType >::xfInv ( const Vector3f & pt) const

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