FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ > Class Template Reference

Voxel masker implementation for lambda expression tests. More...

#include <voxel_map.hpp>

Inheritance diagram for FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >:
FEAT::Geometry::VoxelMasker< CoordType_, dim_ >

Public Types

typedef VoxelMasker< CoordType_, dim_ > BaseClass
 
typedef CoordType_ CoordType
 the coordinate type More...
 
typedef Tiny::Vector< CoordType_, dim_ > PointType
 the point type More...
 

Public Member Functions

 VoxelLambdaMasker (Lambda_ &&lambda)
 Constructor. More...
 
virtual void mask_line (std::vector< int > &mask, const CoordType x_min, const CoordType x_max, const PointType &point) override
 Computes the mask for an entire X-coordinate row. More...
 

Static Public Member Functions

static CoordType x_coord (const CoordType x_min, const CoordType x_max, const std::size_t i, const std::size_t n)
 Computes the X-coordinate for a given point. More...
 

Public Attributes

Lambda_ _lambda
 the lambda expression More...
 

Detailed Description

template<typename Lambda_, typename CoordType_, int dim_>
class FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >

Voxel masker implementation for lambda expression tests.

This class implements the voxel masker interface by evaluating a user-supplied lambda expression, which performs the inside/outside test for each point. A point is considered to be inside if the lambda expression evaluates to true.

Author
Peter Zajac

Definition at line 248 of file voxel_map.hpp.

Member Typedef Documentation

◆ BaseClass

template<typename Lambda_ , typename CoordType_ , int dim_>
typedef VoxelMasker<CoordType_, dim_> FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::BaseClass

Definition at line 252 of file voxel_map.hpp.

◆ CoordType

template<typename Lambda_ , typename CoordType_ , int dim_>
typedef CoordType_ FEAT::Geometry::VoxelMasker< CoordType_, dim_ >::CoordType

the coordinate type

Definition at line 74 of file voxel_map.hpp.

◆ PointType

template<typename Lambda_ , typename CoordType_ , int dim_>
typedef Tiny::Vector<CoordType_, dim_> FEAT::Geometry::VoxelMasker< CoordType_, dim_ >::PointType

the point type

Definition at line 76 of file voxel_map.hpp.

Constructor & Destructor Documentation

◆ VoxelLambdaMasker()

template<typename Lambda_ , typename CoordType_ , int dim_>
FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::VoxelLambdaMasker ( Lambda_ &&  lambda)
inlineexplicit

Constructor.

Parameters
[in]lambdaThe lambda expression that is to be used to perform the inside/outside test. The lambda expression is expected to take a const reference to a PointType object as a sole input parameter and to return either true or false depending on whether the point is inside or outside.

Definition at line 268 of file voxel_map.hpp.

Member Function Documentation

◆ mask_line()

template<typename Lambda_ , typename CoordType_ , int dim_>
virtual void FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::mask_line ( std::vector< int > &  mask,
const CoordType  x_min,
const CoordType  x_max,
const PointType point 
)
inlineoverridevirtual

Computes the mask for an entire X-coordinate row.

This function is called by the VoxelMap class to perform the inside/outside-test for a line of points with common Y/Z coordinates, where the X coordinates of the points have to be computed from the X-coordinate range and the number points by calling the x_coord helper function.

Attention
This function must be implemented in a thread-safe fashion, since the VoxelMap class makes use of OpenMP parallelization to speed up the map computation time.
Parameters
[in,out]maskThe mask vector for the current X-row. Is allocated to correct size, but its contents are undefined upon entry. Assuming that the length of this vector is n, then the i-th entry of the mask vector is to be set to 1 if the point with the X-coordinate equal to x_coord(x_min, x_max, i, mask.size()) is inside the mask, otherwise it is to be set to 0.
[in]x_min,x_maxThe minimal and maximal X-coordinate of the X-line for which the mask is to be computed.
[in]pointThe point that contains the Y- and (in 3D) Z-coordinates of the X-line that for which the mask is to be computed. The first coordinate, i.e. point[0], is undefined, so only point[1] and (in 3D) point[2] are set to the Y-/Z-coords.

Implements FEAT::Geometry::VoxelMasker< CoordType_, dim_ >.

Definition at line 273 of file voxel_map.hpp.

References FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::_lambda, and FEAT::Geometry::VoxelMasker< CoordType_, dim_ >::x_coord().

◆ x_coord()

template<typename CoordType_ , int dim_>
static CoordType FEAT::Geometry::VoxelMasker< CoordType_, dim_ >::x_coord ( const CoordType  x_min,
const CoordType  x_max,
const std::size_t  i,
const std::size_t  n 
)
inlinestaticinherited

Computes the X-coordinate for a given point.

This helper function can be used by derived classes to compute the X-coordinate for a single point on the mask line.

Parameters
[in]x_min,x_maxThe minimal and maximal X-coordinate of the X-line for which the mask is to be computed.
[in]iThe index of the current point in the X-line that is being tested
[in]nThe number of points in the line; corresponds to mask.size()
Returns
The X-coordinate of the current point

Definition at line 101 of file voxel_map.hpp.

Referenced by FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::mask_line().

Member Data Documentation

◆ _lambda

template<typename Lambda_ , typename CoordType_ , int dim_>
Lambda_ FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::_lambda

the lambda expression

Definition at line 258 of file voxel_map.hpp.

Referenced by FEAT::Geometry::VoxelLambdaMasker< Lambda_, CoordType_, dim_ >::mask_line().


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