ViennaLS
Loading...
Searching...
No Matches
viennals::CompareCriticalDimensions< T, D > Class Template Reference

Compares critical dimensions (surface positions) between two level sets. Critical dimensions are defined as the maximum or minimum positions where the surface (SDF = 0) exists within a specified range. More...

#include <lsCompareCriticalDimensions.hpp>

Public Member Functions

 CompareCriticalDimensions ()
 CompareCriticalDimensions (SmartPointer< Domain< T, D > > passedLevelSetTarget, SmartPointer< Domain< T, D > > passedLevelSetSample)
void setLevelSetTarget (SmartPointer< Domain< T, D > > passedLevelSet)
void setLevelSetSample (SmartPointer< Domain< T, D > > passedLevelSet)
void addXRange (T minX, T maxX, bool findMaximum=true)
 Add an X range to find maximum or minimum Y position.
void addYRange (T minY, T maxY, bool findMaximum=true)
 Add a Y range to find maximum or minimum X position.
void clearRanges ()
 Clear all range specifications.
void setOutputMesh (SmartPointer< Mesh< T > > passedMesh)
 Set the output mesh where critical dimension locations will be stored.
void apply ()
 Apply the comparison.
size_t getNumCriticalDimensions () const
 Get the number of critical dimensions compared.
bool getCriticalDimensionResult (size_t index, T &positionTarget, T &positionSample, T &difference) const
 Get a specific critical dimension result.
T getMeanDifference () const
 Get mean absolute difference across all valid critical dimensions.
T getMaxDifference () const
 Get maximum difference across all valid critical dimensions.
T getRMSE () const
 Get RMSE across all valid critical dimensions.
std::vector< TgetAllDifferences () const
 Get all valid results.

Detailed Description

template<class T, int D = 2>
class viennals::CompareCriticalDimensions< T, D >

Compares critical dimensions (surface positions) between two level sets. Critical dimensions are defined as the maximum or minimum positions where the surface (SDF = 0) exists within a specified range.

  • If X range is specified: finds Y coordinates where surface exists, then identifies max/min Y positions
  • If Y range is specified: finds X coordinates where surface exists, then identifies max/min X positions

The surface position is interpolated from grid points where the SDF crosses zero. Multiple ranges can be specified to compare different critical dimensions.

The code is currently intended for 2D level sets only.

Note for the future: lsToDiskMesh could be used instead of lsToSurfaceMesh, which is probably more efficient but slightly less accurate.

Constructor & Destructor Documentation

◆ CompareCriticalDimensions() [1/2]

template<class T, int D = 2>
viennals::CompareCriticalDimensions< T, D >::CompareCriticalDimensions ( )
inline

◆ CompareCriticalDimensions() [2/2]

template<class T, int D = 2>
viennals::CompareCriticalDimensions< T, D >::CompareCriticalDimensions ( SmartPointer< Domain< T, D > > passedLevelSetTarget,
SmartPointer< Domain< T, D > > passedLevelSetSample )
inline

Member Function Documentation

◆ addXRange()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::addXRange ( T minX,
T maxX,
bool findMaximum = true )
inline

Add an X range to find maximum or minimum Y position.

◆ addYRange()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::addYRange ( T minY,
T maxY,
bool findMaximum = true )
inline

Add a Y range to find maximum or minimum X position.

◆ apply()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::apply ( )
inline

Apply the comparison.

◆ clearRanges()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::clearRanges ( )
inline

Clear all range specifications.

◆ getAllDifferences()

template<class T, int D = 2>
std::vector< T > viennals::CompareCriticalDimensions< T, D >::getAllDifferences ( ) const
inline

Get all valid results.

◆ getCriticalDimensionResult()

template<class T, int D = 2>
bool viennals::CompareCriticalDimensions< T, D >::getCriticalDimensionResult ( size_t index,
T & positionTarget,
T & positionSample,
T & difference ) const
inline

Get a specific critical dimension result.

◆ getMaxDifference()

template<class T, int D = 2>
T viennals::CompareCriticalDimensions< T, D >::getMaxDifference ( ) const
inline

Get maximum difference across all valid critical dimensions.

◆ getMeanDifference()

template<class T, int D = 2>
T viennals::CompareCriticalDimensions< T, D >::getMeanDifference ( ) const
inline

Get mean absolute difference across all valid critical dimensions.

◆ getNumCriticalDimensions()

template<class T, int D = 2>
size_t viennals::CompareCriticalDimensions< T, D >::getNumCriticalDimensions ( ) const
inline

Get the number of critical dimensions compared.

◆ getRMSE()

template<class T, int D = 2>
T viennals::CompareCriticalDimensions< T, D >::getRMSE ( ) const
inline

Get RMSE across all valid critical dimensions.

◆ setLevelSetSample()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::setLevelSetSample ( SmartPointer< Domain< T, D > > passedLevelSet)
inline

◆ setLevelSetTarget()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::setLevelSetTarget ( SmartPointer< Domain< T, D > > passedLevelSet)
inline

◆ setOutputMesh()

template<class T, int D = 2>
void viennals::CompareCriticalDimensions< T, D >::setOutputMesh ( SmartPointer< Mesh< T > > passedMesh)
inline

Set the output mesh where critical dimension locations will be stored.


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