49template <
int D,
class T >
52template <
int D,
class T >
53std::ostream&
operator<<( std::ostream& os,
const Position< D, T >& pos );
55template <
int D,
class T =
double >
59 template <
int OD,
class OT >
126 template <
class OT >
134 template <
class OT >
149 template <
class OT >
157 template <
class OT >
194 template <
class OT >
203 template <
class OT >
212 template <
class OT >
221 template <
class OT >
293 operator std::string()
const;
304 void print( std::ostream& out,
char sep =
' ' )
const;
312 std::array< T, D >
x_;
368 for (
int i = 0; i < D; ++i )
379 for (
int i = 0; i < D; ++i )
411template <
int D,
class T >
417template <
int D,
class T >
425template <
int D,
class T >
434template <
int D,
class T >
437 for (
int i = 0; i < D; ++i )
443template <
int D,
class T >
448 throw BadProperty( String::compose(
"Expected a %1-dimensional position.", D ) );
450 std::copy( y.begin(), y.end(), x_.begin() );
453template <
int D,
class T >
459template <
int D,
class T >
466template <
int D,
class T >
469 x_ = std::move( other.x_ );
472template <
int D,
class T >
478 throw BadProperty( String::compose(
"Expected a %1-dimensional position.", D ) );
480 std::copy( y.begin(), y.end(), x_.begin() );
485template <
int D,
class T >
492template <
int D,
class T >
499template <
int D,
class T >
500const std::vector< T >
503 return std::vector< T >( x_.begin(), x_.end() );
506template <
int D,
class T >
510 assert( vector.size() == D );
511 std::copy( x_.begin(), x_.end(), vector.begin() );
515template <
int D,
class T >
525template <
int D,
class T >
535template <
int D,
class T >
544template <
int D,
class T >
554template <
int D,
class T >
564template <
int D,
class T >
573template <
int D,
class T >
582template <
int D,
class T >
591template <
int D,
class T >
600template <
int D,
class T >
605 for (
int i = 0; i < D; ++i )
607 x_[ i ] += other.x_[ i ];
612template <
int D,
class T >
617 for (
int i = 0; i < D; ++i )
619 x_[ i ] -= other.x_[ i ];
624template <
int D,
class T >
629 for (
int i = 0; i < D; ++i )
631 x_[ i ] *= other.x_[ i ];
636template <
int D,
class T >
641 for (
int i = 0; i < D; ++i )
643 x_[ i ] /= other.x_[ i ];
648template <
int D,
class T >
652 for (
int i = 0; i < D; ++i )
659template <
int D,
class T >
663 for (
int i = 0; i < D; ++i )
670template <
int D,
class T >
674 for (
int i = 0; i < D; ++i )
681template <
int D,
class T >
685 for (
int i = 0; i < D; ++i )
692template <
int D,
class T >
696 for (
int i = 0; i < D; ++i )
698 if ( x_[ i ] != y.x_[ i ] )
706template <
int D,
class T >
710 for (
int i = 0; i < D; ++i )
712 if ( x_[ i ] != y.x_[ i ] )
720template <
int D,
class T >
724 for (
int i = 0; i < D; ++i )
726 if ( x_[ i ] >= y.x_[ i ] )
734template <
int D,
class T >
738 for (
int i = 0; i < D; ++i )
740 if ( x_[ i ] <= y.x_[ i ] )
748template <
int D,
class T >
752 for (
int i = 0; i < D; ++i )
754 if ( x_[ i ] > y.x_[ i ] )
762template <
int D,
class T >
766 for (
int i = 0; i < D; ++i )
768 if ( x_[ i ] < y.x_[ i ] )
776template <
int D,
class T >
781 for (
int i = 0; i < D; ++i )
783 lensq += x_[ i ] * x_[ i ];
785 return std::sqrt( lensq );
788template <
int D,
class T >
790operator std::string()
const
792 std::stringstream ss;
797template <
int D,
class T >
802 for (
int i = 1; i < D; ++i )
804 out << sep << x_[ i ];
808template <
int D,
class T >
817 for (
int i = 1; i < D; ++i )
819 os <<
", " << pos.
x_[ i ];
Exception to be thrown if a status parameter is incomplete or inconsistent.
Definition exceptions.h:680
An index into a multidimensional array.
Definition position.h:340
MultiIndex(const Position< D, int > &ur)
Definition position.h:349
Position< D, int > lower_left_
Definition position.h:406
Position< D, int > get_lower_left() const
Definition position.h:395
MultiIndex()
Definition position.h:342
Position< D, int > upper_right_
Definition position.h:407
Position< D, int > get_upper_right() const
Definition position.h:400
MultiIndex(const Position< D, int > &lower_left, const Position< D, int > &upper_right)
Definition position.h:356
MultiIndex & operator++()
Definition position.h:364
MultiIndex operator++(int)
Definition position.h:387
void print(std::ostream &out, char sep=' ') const
Print position to output stream.
Definition position.h:799
Position operator-() const
Unary minus.
Definition position.h:537
Position operator+(const T &) const
Elementwise addition with scalar.
Definition position.h:566
void get_vector(std::vector< T > &vector) const
Definition position.h:508
bool operator<=(const Position &y) const
Definition position.h:750
friend class Position
Definition position.h:60
Position()
Default constructor, initializing all coordinates to zero.
Definition position.h:412
Position & operator=(const std::vector< T > &y)
Definition position.h:474
Position & operator+=(const Position< D, OT > &)
In-place elementwise addition.
Position(const T *const y)
Constructor initializing a Position from an array.
Definition position.h:435
Position & operator/=(const Position< D, OT > &)
In-place elementwise division.
T & operator[](int i)
Definition position.h:487
Position(Position &&other)
Move constructor.
Definition position.h:467
Position & operator*=(const T &)
In-place multiplication by scalar.
Definition position.h:672
Position(const T &, const T &, const T &)
3D Constructor.
Definition position.h:426
T length() const
Length of Position vector.
Definition position.h:778
Position(const T &, const T &)
2D Constructor.
Definition position.h:418
Position(const Position &other)
Definition position.h:454
const std::vector< T > get_vector() const
Definition position.h:501
Position operator/(const Position< D, OT > &other) const
Elementwise division.
bool operator<(const Position &y) const
Definition position.h:722
bool operator!=(const Position &y) const
Definition position.h:708
Position operator/(const T &) const
Division with scalar.
Definition position.h:593
bool operator>=(const Position &y) const
Definition position.h:764
Position(const Position< D, U > &other)
Definition position.h:461
Position operator+(const Position< D, OT > &other) const
Elementwise addition.
Position operator-(const Position< D, OT > &other) const
Elementwise subtraction.
Position & operator-=(const Position< D, OT > &)
In-place elementwise subtraction.
Position & operator=(Position &&other)=default
Move assignment constructor.
Position & operator-=(const T &)
In-place elementwise subtraction with scalar.
Definition position.h:661
std::array< T, D > x_
Definition position.h:312
Position(const std::vector< T > &y)
Constructor initializing a Position from a std::vector.
Definition position.h:444
Position operator-(const T &) const
Elementwise subtraction with scalar.
Definition position.h:575
Position & operator=(const Position &other)=default
Assignment constructor.
Position operator*(const Position< D, OT > &other) const
Elementwise multiplication.
Position & operator/=(const T &)
In-place elementwise division.
Definition position.h:683
Position & operator+=(const T &)
In-place elementwise addition with scalar.
Definition position.h:650
bool operator>(const Position &y) const
Definition position.h:736
Position & operator*=(const Position< D, OT > &)
In-place elementwise multiplication.
Position operator*(const T &) const
Multiplication with scalar.
Definition position.h:584
const T & operator[](int i) const
Definition position.h:494
bool operator==(const Position &y) const
Definition position.h:694
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
std::ostream & operator<<(std::ostream &out, const LoggingEvent &e)
Definition logging_event.cpp:58
A box is defined by the lower left corner (minimum coordinates) and the upper right corner (maximum c...
Definition position.h:321
Position< D > lower_left
Definition position.h:331
Box()
Definition position.h:322
Position< D > upper_right
Definition position.h:332
Box(const Position< D > &lower_left, const Position< D > &upper_right)
Definition position.h:325