30 template <UInt D,
typename TCoordinateType =
double>
37 using DataType = std::array<CoordinateType, D>;
75 static_assert(D == 2,
"DPosition<D, TCoordinateType>:DPosition(x,y): index overflow!");
83 static_assert(D == 3,
"DPosition<D, TCoordinateType>:DPosition(x,y,z): index overflow!");
115 for (
Size i = 0; i < D; ++i)
128 OPENMS_PRECONDITION(index < D,
"DPosition<D,TCoordinateType>:operator [] (Position): index overflow!");
135 OPENMS_PRECONDITION(index < D,
"DPosition<D,TCoordinateType>:operator [] (Position): index overflow!");
190 for (
Size i = 0; i < D; i++)
200 for (
Size i = 0; i < D; i++)
223 for (
Size i = 0; i < D; ++i)
233 for (
Size i = 0; i < D; ++i)
244 for (
Size i = 0; i < D; ++i)
254 for (
Size i = 0; i < D; ++i)
265 for (
Size i = 0; i < D; ++i)
276 for (
Size i = 0; i < D; ++i)
286 for (
Size i = 0; i < D; ++i)
296 for (
Size i = 0; i < D; ++i)
328 return DPosition((std::numeric_limits<typename DPosition::CoordinateType>::min)());
334 return DPosition(std::numeric_limits<typename DPosition::CoordinateType>::lowest());
340 return DPosition((std::numeric_limits<typename DPosition::CoordinateType>::max)());
378 template <UInt D,
typename TCoordinateType>
381 for (
Size i = 0; i < D; ++i)
383 position[i] *= scalar;
389 template <UInt D,
typename TCoordinateType>
392 for (
Size i = 0; i < D; ++i)
394 position[i] *= scalar;
400 template <UInt D,
typename TCoordinateType>
403 for (
Size i = 0; i < D; ++i)
405 position[i] /= scalar;
411 template <UInt D,
typename TCoordinateType>
415 for (
UInt i = 1; i < D; ++i)
427 template<OpenMS::UInt D,
typename TCoordinateType>
428 struct hash<
OpenMS::DPosition<D, TCoordinateType>>
432 std::size_t seed = 0;
Representation of a coordinate in D-dimensional space.
Definition DPosition.h:32
@ DIMENSION
Definition DPosition.h:42
static constexpr DPosition minPositive()
smallest positive
Definition DPosition.h:326
CoordinateType value_type
Definition DPosition.h:48
DPosition & operator/=(CoordinateType scalar)
Scalar division.
Definition DPosition.h:294
DPosition operator+(const DPosition &point) const
Addition (a bit inefficient)
Definition DPosition.h:220
const_iterator begin() const
Non-mutable begin iterator.
Definition DPosition.h:348
DPosition & operator*=(CoordinateType scalar)
Scalar multiplication.
Definition DPosition.h:284
bool operator<=(const DPosition &point) const
Lexicographical greater less or equal operator.
Definition DPosition.h:182
DPosition & operator=(DPosition &&source) noexcept=default
Move Assignment operator.
DPosition(DPosition &&rhs) noexcept=default
Move constructor.
DPosition(CoordinateType x)
Constructor that fills all dimensions with the value x.
Definition DPosition.h:67
DPosition(CoordinateType x, CoordinateType y)
Constructor only for DPosition<2> that takes two Coordinates.
Definition DPosition.h:73
CoordinateType & reference
Definition DPosition.h:49
CoordinateType operator[](Size index) const
Const accessor for the dimensions.
Definition DPosition.h:126
DPosition & abs() noexcept
Make all dimension values positive.
Definition DPosition.h:113
bool spatiallyLessEqual(const DPosition &point) const
Spatially (geometrically) less or equal operator. All coordinates must be "<=".
Definition DPosition.h:188
DPosition(CoordinateType x, CoordinateType y, CoordinateType z)
Constructor only for DPosition<3> that takes three Coordinates.
Definition DPosition.h:81
DPosition()=default
Default constructor.
DPosition(const DPosition &pos)=default
Copy constructor.
CoordinateType * iterator
Definition DPosition.h:51
void setX(CoordinateType c)
Name mutator for the first dimension. Only for DPosition<2>, for visualization.
Definition DPosition.h:154
std::array< CoordinateType, D > DataType
Definition DPosition.h:37
bool operator<(const DPosition &point) const
Lexicographical less than operator. Lexicographical comparison from dimension 0 to dimension D-1 is d...
Definition DPosition.h:176
CoordinateType getY() const
Name accessor for the second dimension. Only for DPosition<2>, for visualization.
Definition DPosition.h:147
bool operator>=(const DPosition &point) const
Lexicographical greater or equal operator.
Definition DPosition.h:214
static constexpr DPosition maxPositive()
largest positive
Definition DPosition.h:338
bool operator>(const DPosition &point) const
Lexicographical greater than operator.
Definition DPosition.h:208
DPosition & operator+=(const DPosition &point)
Addition.
Definition DPosition.h:231
DPosition & operator-=(const DPosition &point)
Subtraction.
Definition DPosition.h:252
DPosition operator-(const DPosition &point) const
Subtraction (a bit inefficient)
Definition DPosition.h:241
bool operator!=(const DPosition &point) const =default
Equality operator.
bool operator==(const DPosition &point) const =default
Equality operator.
CoordinateType getX() const
Name accessor for the first dimension. Only for DPosition<2>, for visualization.
Definition DPosition.h:140
static constexpr DPosition zero()
all zero
Definition DPosition.h:320
const CoordinateType * const_iterator
Definition DPosition.h:52
CoordinateType operator*(const DPosition &point) const
Inner product.
Definition DPosition.h:273
static constexpr DPosition minNegative()
smallest negative
Definition DPosition.h:332
CoordinateType & operator[](Size index)
Accessor for the dimensions.
Definition DPosition.h:133
void clear()
Set all dimensions to zero.
Definition DPosition.h:310
iterator end()
Mutable end iterator.
Definition DPosition.h:366
const_iterator end() const
Non-mutable end iterator.
Definition DPosition.h:354
void swap(DPosition &rhs) noexcept
Swap the two objects.
Definition DPosition.h:107
~DPosition() noexcept=default
Destructor (not-virtual as this will save a lot of space!)
iterator begin()
Mutable begin iterator.
Definition DPosition.h:360
bool spatiallyGreaterEqual(const DPosition &point) const
Spatially (geometrically) greater or equal operator. All coordinates must be ">=".
Definition DPosition.h:198
CoordinateType * pointer
Definition DPosition.h:50
TCoordinateType CoordinateType
Coordinate type.
Definition DPosition.h:35
DPosition & operator=(const DPosition &source)=default
Assignment operator.
static constexpr Size size()
Returns the number of dimensions.
Definition DPosition.h:304
DataType coordinate_
Definition DPosition.h:374
void setY(CoordinateType c)
Name mutator for the second dimension. Only for DPosition<2>, for visualization.
Definition DPosition.h:161
DPosition operator-() const
Negation (a bit inefficient)
Definition DPosition.h:262
unsigned int UInt
Unsigned integer type.
Definition Types.h:64
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
#define OPENMS_PRECONDITION(condition, message)
Precondition macro.
Definition openms/include/OpenMS/CONCEPT/Macros.h:94
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
std::ostream & operator<<(std::ostream &os, const AccurateMassSearchResult &amsr)
DPosition< D, TCoordinateType > operator*(DPosition< D, TCoordinateType > position, typename DPosition< D, TCoordinateType >::CoordinateType scalar)
Scalar multiplication (a bit inefficient)
Definition DPosition.h:379
void hash_combine(std::size_t &seed, std::size_t value) noexcept
Combine a hash value with additional data using golden ratio mixing.
Definition HashUtils.h:87
std::size_t hash_float(T value) noexcept
Hash for a floating point type (float or double).
Definition HashUtils.h:142
DPosition< D, TCoordinateType > operator/(DPosition< D, TCoordinateType > position, typename DPosition< D, TCoordinateType >::CoordinateType scalar)
Scalar multiplication (a bit inefficient)
Definition DPosition.h:401
const PrecisionWrapper< FloatingPointType > precisionWrapper(const FloatingPointType rhs)
Wrapper function that sets the appropriate precision for output temporarily. The original precision i...
Definition PrecisionWrapper.h:69
std::size_t operator()(const OpenMS::DPosition< D, TCoordinateType > &pos) const noexcept
Definition DPosition.h:430