Ocean
|
This class implements a 2D lookup object with values at the bins' center positions defining the individual lookup values. More...
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... | |
T | nearestValue (const TScalar x, const TScalar y) const |
Applies a lookup for a specific position in this lookup object. More... | |
T | bilinearValue (const TScalar x, const TScalar y) const |
Applies a lookup for a specific position in this lookup object. More... | |
T | bicubicValue (const TScalar x, const TScalar y) const |
Applies a lookup for a specific position in this lookup object. More... | |
T | 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... | |
T | 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... | |
T | 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... | |
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.
T | The data type of the stored lookup values |
TScalar | The data type of the scalar values, either 'float' or 'double' |
|
default |
Creates a new empty lookup object.
|
inline |
Copy constructor.
lookup | The lookup object to be copied |
|
inlinenoexcept |
Move constructor.
lookup | The lookup object to be moved |
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.
sizeX | Horizontal dimension of the lookup table, with range [1, infinity) |
sizeY | Vertical dimension of the lookup table, with range [1, infinity) |
binsX | Number of horizontal bins, with range [1, sizeX] |
binsY | Number of vertical bins, with range [1, sizeY] |
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.
sizeX | Horizontal dimension of the lookup table, with range [1, infinity) |
sizeY | Vertical dimension of the lookup table, with range [1, infinity) |
binsX | Number of horizontal bins, with range [1, sizeX] |
binsY | Number of vertical bins, with range [1, sizeY] |
binValues | The bin values of the lookup object (row aligned), binsX * binsY values must be provided |
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.
sizeX | Horizontal dimension of the lookup table, with range [1, infinity) |
sizeY | Vertical dimension of the lookup table, with range [1, infinity) |
lookup | The lookup object specifying the lookup values and the number of lookup bins |
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.
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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Returns the horizontal bin that corresponds to a precise horizontal lookup position.
x | Precise horizontal position in relation to the dimension of this lookup object, with range [0, sizeX() - 1] |
|
inline |
Returns the vertical bin that corresponds to a precise vertical lookup position.
y | Precise vertical position in relation to the dimension of this lookup object, with range [0, sizeY() - 1] |
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.
x | Precise horizontal position for the resulting lookup value, with range -(infinity, infinity) |
y | Precise vertical position for the resulting lookup value, with range -(infinity, infinity) |
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.
x | Precise horizontal position for the resulting lookup value, with range -(infinity, infinity) |
y | Precise vertical position for the resulting lookup value, with range -(infinity, infinity) |
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).
x | Precise horizontal position for the resulting lookup value, with range -(infinity, infinity) |
y | Precise vertical position for the resulting lookup value, with range -(infinity, infinity) |
|
inline |
Returns whether a given position lies inside this lookup object and therefore whether this position can be applied for the interpolation functions.
x | Precise horizontal position for the resulting lookup value, with range (-infinity, infinity) |
y | Precise vertical position for the resulting lookup value, with range (-infinity, infinity) |
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).
|
noexcept |
Move operator.
lookup | The lookup object that will be moved |
|
inline |