Ocean
Ocean::LookupCenter2< T, TScalar > Class Template Reference

This class implements a 2D lookup object with values at the bins' center positions defining the individual lookup values. More...

Inheritance diagram for Ocean::LookupCenter2< T, TScalar >:

Public Member Functions

 LookupCenter2 ()=default
 Creates a new empty lookup object. More...
 
 LookupCenter2 (const LookupCenter2< T, TScalar > &lookup)
 Copy constructor. More...
 
 LookupCenter2 (LookupCenter2< T, TScalar > &&lookup) noexcept
 Move constructor. More...
 
 LookupCenter2 (const size_t sizeX, const size_t sizeY, const size_t binsX, const size_t binsY)
 Creates a new lookup object by definition of the dimensions and bin numbers. More...
 
 LookupCenter2 (const size_t sizeX, const size_t sizeY, const size_t binsX, const size_t binsY, const T *binValues)
 Creates a new lookup object by definition of the dimensions and bin numbers. More...
 
 LookupCenter2 (const size_t sizeX, const size_t sizeY, const LookupCenter2< T, TScalar > &lookup)
 Creates a new lookup object by definition of the dimensions and a given lookup object. More...
 
bool isInside (const TScalar x, const TScalar y) const
 Returns whether a given position lies inside this lookup object and therefore whether this position can be applied for the interpolation functions. More...
 
size_t binX (const TScalar x) const
 Returns the horizontal bin that corresponds to a precise horizontal lookup position. More...
 
size_t binY (const TScalar y) const
 Returns the vertical bin that corresponds to a precise vertical lookup position. More...
 
size_t binTopLeftX (const size_t binX) const
 Returns the horizontal top left position of a specified bin with pixel accuracy. More...
 
size_t binTopLeftY (const size_t binY) const
 Returns the vertical top left position of a specified bin with pixel accuracy. More...
 
size_t binBottomRightX (const size_t binX) const
 Returns the horizontal bottom right position (including) of a specified bin with pixel accuracy. More...
 
size_t binBottomRightY (const size_t binY) const
 Returns the vertical bottom right position of a specified bin with pixel accuracy. More...
 
TScalar binCenterPositionX (const size_t binX) const
 Returns the horizontal center position of a specific bin in relation to the dimension of this lookup object. More...
 
TScalar binCenterPositionY (const size_t binY) const
 Returns the vertical center position of a specific bin in relation to the dimension of this lookup object. More...
 
Vector2 binCenterPosition (const size_t binX, const size_t binY) const
 Returns the center position of a specific bin in relation to the dimension of this lookup object. More...
 
const T & binCenterValue (const size_t binX, const size_t binY) const
 Returns the lookup value of a specific bin's center of this lookup object. More...
 
T & binCenterValue (const size_t binX, const size_t binY)
 Returns the lookup value of a specific bin's center of this lookup object. More...
 
nearestValue (const TScalar x, const TScalar y) const
 Applies a lookup for a specific position in this lookup object. More...
 
bilinearValue (const TScalar x, const TScalar y) const
 Applies a lookup for a specific position in this lookup object. More...
 
bicubicValue (const TScalar x, const TScalar y) const
 Applies a lookup for a specific position in this lookup object. More...
 
clampedNearestValue (const TScalar x, const TScalar y) const
 Applies a lookup for a specific position in this lookup object while the position is clamped to match into the domain of the lookup table. More...
 
clampedBilinearValue (const TScalar x, const TScalar y) const
 Applies a lookup for a specific position in this lookup object while the position is clamped to match into the domain of the lookup table. More...
 
clampedBicubicValue (const TScalar x, const TScalar y) const
 Applies a lookup for a specific position in this lookup object while the position is clamped to match into the domain of the lookup table. More...
 
void setBinCenterValue (const size_t binX, const size_t binY, const T &value)
 Sets the value of one specific lookup bin's center. More...
 
LookupCenter2< T, TScalar > & operator= (LookupCenter2< T, TScalar > &&lookup) noexcept
 Move operator. More...
 
- Public Member Functions inherited from Ocean::Lookup2< T, Scalar >
const T * data () const
 Returns a pointer to the constant bin data (row aligned). More...
 
T * data ()
 Returns a pointer to the bin data (row aligned). More...
 
size_t sizeX () const
 Returns the horizontal dimension of this lookup object. More...
 
size_t sizeY () const
 Returns the vertical dimension of this lookup object. More...
 
size_t binsX () const
 Returns the number of horizontal bins of this lookup object. More...
 
size_t binsY () const
 Returns the number of vertical bins of this lookup object. More...
 
bool isEmpty () const
 Returns whether this lookup object does not hold any lookup bin. More...
 
 operator bool () const
 Returns whether this lookup object holds at least one lookup bin. More...
 
bool operator== (const Lookup2< T, Scalar > &lookup) const
 Returns whether two lookup objects are identical. More...
 
bool operator!= (const Lookup2< T, Scalar > &lookup) const
 Returns whether two lookup objects are not identical. More...
 

Additional Inherited Members

- Public Types inherited from Ocean::Lookup2< T, Scalar >
typedef T Type
 Definition of the lookup data type. More...
 
- Protected Types inherited from Ocean::Lookup2< T, Scalar >
typedef std::vector< T > Values
 Definition of a vector holding lookup values. More...
 
- Protected Member Functions inherited from Ocean::Lookup2< T, Scalar >
 Lookup2 ()=default
 Creates a new empty lookup object. More...
 
 Lookup2 (const Lookup2< T, Scalar > &lookup)
 Copy constructor. More...
 
 Lookup2 (Lookup2< T, Scalar > &&lookup) noexcept
 Move constructor. More...
 
Lookup2< T, Scalar > & operator= (const Lookup2< T, Scalar > &lookup)
 Assign operator. More...
 
Lookup2< T, Scalar > & operator= (Lookup2< T, Scalar > &&lookup) noexcept
 Move operator. More...
 
- Protected Attributes inherited from Ocean::Lookup2< T, Scalar >
size_t sizeX_
 Horizontal dimension of this lookup object. More...
 
size_t sizeY_
 Vertical dimension of this lookup object. More...
 
size_t binsX_
 Number of horizontal bins. More...
 
size_t binsY_
 Number of vertical bins. More...
 
Scalar invSizeX_
 Inverse horizontal dimension of this lookup object. More...
 
Scalar invSizeY_
 Inverse vertical dimension of this lookup object. More...
 
Scalar invBinsX_
 Inverse number of horizontal bins. More...
 
Scalar invBinsY_
 Inverse number of vertical bins. More...
 
Values values_
 The values of the lookup bins. More...
 

Detailed Description

template<typename T, typename TScalar = Scalar>
class Ocean::LookupCenter2< T, TScalar >

This class implements a 2D lookup object with values at the bins' center positions defining the individual lookup values.

This area is separated into individual neighboring bins (with almost same size) each covering an integer-sized area.
The sizes of the bins may vary due to rounding issues if the number of bins is not dividable without remainder in relation to the size of the lookup object.
Each bin covers a whole-numbered number of elements (e.g., pixels) and the left, top, right and bottom position of each bin is also an integer number.
However, the center position of the bins may have a non-integer position.

The lookup table with 4x2 bins has the following layout:

  ---   ---   ---   ---
|  +  |  +  |  +  |  +  |
  ---   ---   ---   ---
|  +  |  +  |  +  |  +  |
  ---   ---   ---   ---

With '+' showing the center positions of the lookup values.
Thus, the lookup table has 4 horizontal bins and 4 horizontal lookup values.
All lookup values are located inside the specified size of the lookup object.
The vertical positions are accordingly.

Template Parameters
TThe data type of the stored lookup values
TScalarThe data type of the scalar values, either 'float' or 'double'
See also
LookupCorner2

Constructor & Destructor Documentation

◆ LookupCenter2() [1/6]

template<typename T , typename TScalar = Scalar>
Ocean::LookupCenter2< T, TScalar >::LookupCenter2 ( )
default

Creates a new empty lookup object.

◆ LookupCenter2() [2/6]

template<typename T , typename TScalar >
Ocean::LookupCenter2< T, TScalar >::LookupCenter2 ( const LookupCenter2< T, TScalar > &  lookup)
inline

Copy constructor.

Parameters
lookupThe lookup object to be copied

◆ LookupCenter2() [3/6]

template<typename T , typename TScalar >
Ocean::LookupCenter2< T, TScalar >::LookupCenter2 ( LookupCenter2< T, TScalar > &&  lookup)
inlinenoexcept

Move constructor.

Parameters
lookupThe lookup object to be moved

◆ LookupCenter2() [4/6]

template<typename T , typename TScalar >
Ocean::LookupCenter2< T, TScalar >::LookupCenter2 ( const size_t  sizeX,
const size_t  sizeY,
const size_t  binsX,
const size_t  binsY 
)

Creates a new lookup object by definition of the dimensions and bin numbers.

Beware: The bin values will be initialized with the default constructor of the template class.

Parameters
sizeXHorizontal dimension of the lookup table, with range [1, infinity)
sizeYVertical dimension of the lookup table, with range [1, infinity)
binsXNumber of horizontal bins, with range [1, sizeX]
binsYNumber of vertical bins, with range [1, sizeY]

◆ LookupCenter2() [5/6]

template<typename T , typename TScalar >
Ocean::LookupCenter2< T, TScalar >::LookupCenter2 ( const size_t  sizeX,
const size_t  sizeY,
const size_t  binsX,
const size_t  binsY,
const T *  binValues 
)

Creates a new lookup object by definition of the dimensions and bin numbers.

Parameters
sizeXHorizontal dimension of the lookup table, with range [1, infinity)
sizeYVertical dimension of the lookup table, with range [1, infinity)
binsXNumber of horizontal bins, with range [1, sizeX]
binsYNumber of vertical bins, with range [1, sizeY]
binValuesThe bin values of the lookup object (row aligned), binsX * binsY values must be provided

◆ LookupCenter2() [6/6]

template<typename T , typename TScalar >
Ocean::LookupCenter2< T, TScalar >::LookupCenter2 ( const size_t  sizeX,
const size_t  sizeY,
const LookupCenter2< T, TScalar > &  lookup 
)

Creates a new lookup object by definition of the dimensions and a given lookup object.

Parameters
sizeXHorizontal dimension of the lookup table, with range [1, infinity)
sizeYVertical dimension of the lookup table, with range [1, infinity)
lookupThe lookup object specifying the lookup values and the number of lookup bins

Member Function Documentation

◆ bicubicValue()

template<typename T , typename TScalar >
T Ocean::LookupCenter2< T, TScalar >::bicubicValue ( const TScalar  x,
const TScalar  y 
) const

Applies a lookup for a specific position in this lookup object.

The resulting value is cubic interpolated within the 16-neighborhood of the lookup bins.

Parameters
xPrecise horizontal position for the resulting lookup value, with range [0, sizeX() - 1]
yPrecise vertical position for the resulting lookup value, with range [0, sizeY() - 1]

◆ bilinearValue()

template<typename T , typename TScalar >
T Ocean::LookupCenter2< T, TScalar >::bilinearValue ( const TScalar  x,
const TScalar  y 
) const

Applies a lookup for a specific position in this lookup object.

The resulting value is bilinear interpolated within the 4-neighborhood of the lookup bins.

Parameters
xPrecise horizontal position for the resulting lookup value, with range [0, sizeX() - 1]
yPrecise vertical position for the resulting lookup value, with range [0, sizeY() - 1]

◆ binBottomRightX()

template<typename T , typename TScalar >
size_t Ocean::LookupCenter2< T, TScalar >::binBottomRightX ( const size_t  binX) const
inline

Returns the horizontal bottom right position (including) of a specified bin with pixel accuracy.

Parameters
binXThe horizontal bin position, with range [0, binsX())
Returns
The horizontal position within the dimension of the lookup table, with range [0, sizeX())

◆ binBottomRightY()

template<typename T , typename TScalar >
size_t Ocean::LookupCenter2< T, TScalar >::binBottomRightY ( const size_t  binY) const
inline

Returns the vertical bottom right position of a specified bin with pixel accuracy.

Parameters
binYThe vertical bin position, with range [0, binsY())
Returns
The vertical position within the dimension of the lookup table, with range [0, sizeY())

◆ binCenterPosition()

template<typename T , typename TScalar >
Vector2 Ocean::LookupCenter2< T, TScalar >::binCenterPosition ( const size_t  binX,
const size_t  binY 
) const
inline

Returns the center position of a specific bin in relation to the dimension of this lookup object.

Parameters
binXHorizontal bin position, with range [0, binsX())
binYVertical bin position, with range [0, binsY())
Returns
Precise position of the specified bin in relation to the lookup object's dimension, with range [0, sizeX())x[0, sizeY())

◆ binCenterPositionX()

template<typename T , typename TScalar >
TScalar Ocean::LookupCenter2< T, TScalar >::binCenterPositionX ( const size_t  binX) const
inline

Returns the horizontal center position of a specific bin in relation to the dimension of this lookup object.

Parameters
binXHorizontal bin position, with range [0, binsX())
Returns
Precise horizontal position of the specified bin in relation to the lookup object's dimension, with range [0, sizeX())

◆ binCenterPositionY()

template<typename T , typename TScalar >
TScalar Ocean::LookupCenter2< T, TScalar >::binCenterPositionY ( const size_t  binY) const
inline

Returns the vertical center position of a specific bin in relation to the dimension of this lookup object.

Parameters
binYVertical bin position, with range [0, binsY())
Returns
Precise vertical position of the specified bin in relation to the lookup object's dimension, with range [0, sizeY())

◆ binCenterValue() [1/2]

template<typename T , typename TScalar >
T & Ocean::LookupCenter2< T, TScalar >::binCenterValue ( const size_t  binX,
const size_t  binY 
)
inline

Returns the lookup value of a specific bin's center of this lookup object.

Parameters
binXHorizontal bin position, with range [0, binsX())
binYVertical bin position, with range [0, binsY())
Returns
Bin lookup value

◆ binCenterValue() [2/2]

template<typename T , typename TScalar >
const T & Ocean::LookupCenter2< T, TScalar >::binCenterValue ( const size_t  binX,
const size_t  binY 
) const
inline

Returns the lookup value of a specific bin's center of this lookup object.

Parameters
binXHorizontal bin position, with range [0, binsX())
binYVertical bin position, with range [0, binsY())
Returns
Bin lookup value

◆ binTopLeftX()

template<typename T , typename TScalar >
size_t Ocean::LookupCenter2< T, TScalar >::binTopLeftX ( const size_t  binX) const
inline

Returns the horizontal top left position of a specified bin with pixel accuracy.

Parameters
binXThe horizontal bin position, with range [0, binsX())
Returns
The horizontal position within the dimension of the lookup table, with range [0, sizeX())

◆ binTopLeftY()

template<typename T , typename TScalar >
size_t Ocean::LookupCenter2< T, TScalar >::binTopLeftY ( const size_t  binY) const
inline

Returns the vertical top left position of a specified bin with pixel accuracy.

Parameters
binYThe vertical bin position, with range [0, binsY())
Returns
The vertical position within the dimension of the lookup table, with range [0, sizeY())

◆ binX()

template<typename T , typename TScalar >
size_t Ocean::LookupCenter2< T, TScalar >::binX ( const TScalar  x) const
inline

Returns the horizontal bin that corresponds to a precise horizontal lookup position.

Parameters
xPrecise horizontal position in relation to the dimension of this lookup object, with range [0, sizeX() - 1]
Returns
Resulting horizontal bin index

◆ binY()

template<typename T , typename TScalar >
size_t Ocean::LookupCenter2< T, TScalar >::binY ( const TScalar  y) const
inline

Returns the vertical bin that corresponds to a precise vertical lookup position.

Parameters
yPrecise vertical position in relation to the dimension of this lookup object, with range [0, sizeY() - 1]
Returns
Resulting vertical bin index

◆ clampedBicubicValue()

template<typename T , typename TScalar >
T Ocean::LookupCenter2< T, TScalar >::clampedBicubicValue ( const TScalar  x,
const TScalar  y 
) const

Applies a lookup for a specific position in this lookup object while the position is clamped to match into the domain of the lookup table.

The resulting value is cubic interpolated within the 16-neighborhood of the lookup bins.

Parameters
xPrecise horizontal position for the resulting lookup value, with range -(infinity, infinity)
yPrecise vertical position for the resulting lookup value, with range -(infinity, infinity)
See also
clampedNearestValue(), clampedBilinearValue(), bicubicValue().

◆ clampedBilinearValue()

template<typename T , typename TScalar >
T Ocean::LookupCenter2< T, TScalar >::clampedBilinearValue ( const TScalar  x,
const TScalar  y 
) const

Applies a lookup for a specific position in this lookup object while the position is clamped to match into the domain of the lookup table.

The resulting value is bilinear interpolated within the 4-neighborhood of the lookup bins.

Parameters
xPrecise horizontal position for the resulting lookup value, with range -(infinity, infinity)
yPrecise vertical position for the resulting lookup value, with range -(infinity, infinity)
See also
clampedNearestValue(), clampedBicubicValue(), bilinearValue().

◆ clampedNearestValue()

template<typename T , typename TScalar >
T Ocean::LookupCenter2< T, TScalar >::clampedNearestValue ( const TScalar  x,
const TScalar  y 
) const

Applies a lookup for a specific position in this lookup object while the position is clamped to match into the domain of the lookup table.

The resulting value is specified by the nearest bin (determined by the bin's corner positions).

Parameters
xPrecise horizontal position for the resulting lookup value, with range -(infinity, infinity)
yPrecise vertical position for the resulting lookup value, with range -(infinity, infinity)
See also
clampedBilinearValue(), clampedBicubicValue(), nearestValue().

◆ isInside()

template<typename T , typename TScalar >
bool Ocean::LookupCenter2< T, TScalar >::isInside ( const TScalar  x,
const TScalar  y 
) const
inline

Returns whether a given position lies inside this lookup object and therefore whether this position can be applied for the interpolation functions.

Parameters
xPrecise horizontal position for the resulting lookup value, with range (-infinity, infinity)
yPrecise vertical position for the resulting lookup value, with range (-infinity, infinity)
Returns
True, if x and y is in the range [0, sizeX() - 1]x[0, sizeY() - 1]

◆ nearestValue()

template<typename T , typename TScalar >
T Ocean::LookupCenter2< T, TScalar >::nearestValue ( const TScalar  x,
const TScalar  y 
) const

Applies a lookup for a specific position in this lookup object.

The resulting value is specified by the nearest bin (determined by the bin's center position).

Parameters
xPrecise horizontal position for the resulting lookup value, with range [0, sizeX() - 1]
yPrecise vertical position for the resulting lookup value, with range [0, sizeY() - 1]

◆ operator=()

template<typename T , typename TScalar >
LookupCenter2< T, TScalar > & Ocean::LookupCenter2< T, TScalar >::operator= ( LookupCenter2< T, TScalar > &&  lookup)
noexcept

Move operator.

Parameters
lookupThe lookup object that will be moved
Returns
Reference to this object

◆ setBinCenterValue()

template<typename T , typename TScalar >
void Ocean::LookupCenter2< T, TScalar >::setBinCenterValue ( const size_t  binX,
const size_t  binY,
const T &  value 
)
inline

Sets the value of one specific lookup bin's center.

Parameters
binXHorizontal bin position, with range [0, binsX())
binYVertical bin position, with range [0, binsY())
valueThe value to be set

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