maliput
VectorBase< N, Derived > Class Template Reference

Detailed Description

template<std::size_t N, typename Derived>
class maliput::math::VectorBase< N, Derived >

Base class for an N-dimensional vector.

This class follows the Curiosly Recurring Template Pattern design. Instantiated templates for the following kinds of N's are provided:

Template Parameters
NIs the dimension of the vector.
DerivedIs the derived class type.

#include <include/maliput/math/vector.h>

Public Member Functions

 VectorBase ()
 Constructs a null N-dimensional vector. More...
 
 VectorBase (std::array< double, N > values)
 Constructs an N-dimensional vector from a std::array object;. More...
 
 VectorBase (std::initializer_list< double > values)
 Constructs an N-dimensional vector using initializing list;. More...
 
 VectorBase (const VectorBase< N, Derived > &other)=default
 Copy constructor. More...
 
 VectorBase (VectorBase< N, Derived > &&other)=default
 Move constructor. More...
 
double dot (const VectorBase< N, Derived > &vector) const
 
double norm () const
 
void normalize ()
 Divides each vector component by norm(). More...
 
Derived normalized () const
 
std::size_t size () const
 
std::array< double, N > to_array () const
 
Derived & operator= (const VectorBase< N, Derived > &other)
 Assignment operator overload. More...
 
Derived & operator= (const VectorBase< N, Derived > &&other)
 Move assignment operator overload. More...
 
double operator[] (std::size_t index) const
 Constant subscripting array operator overload. More...
 
doubleoperator[] (std::size_t index)
 Subscripting array operator overload. More...
 
bool operator== (const VectorBase< N, Derived > &vector) const
 Equality operator overload. More...
 
bool operator!= (const VectorBase< N, Derived > &vector) const
 Inequality operator overload. More...
 
Derived operator+ (const VectorBase< N, Derived > &vector) const
 Add operator overload. More...
 
Derived & operator+= (const VectorBase< N, Derived > &vector)
 Add and assignment operator overload. More...
 
Derived operator- (const VectorBase< N, Derived > &vector) const
 Substract operator overload. More...
 
Derived operator/ (double scalar) const
 Divide operator overload between a VectorBase<N, Derived> vector and a double. More...
 
std::string to_str () const
 

Static Public Member Functions

static Derived Zero ()
 
static Derived Ones ()
 
static Derived FromStr (const std::string &vector_str)
 Parses vector_str that should come in the following format "{A, B, C, ...}" (white spaces could or could not be there). More...
 

Static Public Attributes

static constexpr std::size_t kDimension {N}
 The dimension of the vector. More...
 

Protected Attributes

std::array< double, N > values_ {}
 

Friends

template<std::size_t N_, typename Derived_ >
Derived_ operator* (const VectorBase< N_, Derived_ > &vector, double scalar)
 Product operator overload between a vector and a double. More...
 
template<std::size_t N_, typename Derived_ >
Derived_ operator* (double scalar, const VectorBase< N_, Derived_ > &vector)
 Product operator overload between a double and a vector. More...
 
template<std::size_t N_, typename Derived_ >
std::ostream & operator<< (std::ostream &os, const VectorBase< N_, Derived_ > &vector)
 Insertion operator overload. More...
 

Constructor & Destructor Documentation

◆ VectorBase() [1/5]

Constructs a null N-dimensional vector.

◆ VectorBase() [2/5]

VectorBase ( std::array< double, N >  values)

Constructs an N-dimensional vector from a std::array object;.

Exceptions
common::assertion_errorWhen size of values differs with the N parameter.

◆ VectorBase() [3/5]

VectorBase ( std::initializer_list< double values)

Constructs an N-dimensional vector using initializing list;.

Exceptions
common::assertion_errorWhen size of values differs with the N parameter

◆ VectorBase() [4/5]

VectorBase ( const VectorBase< N, Derived > &  other)
default

Copy constructor.

◆ VectorBase() [5/5]

VectorBase ( VectorBase< N, Derived > &&  other)
default

Move constructor.

Member Function Documentation

◆ dot()

double dot ( const VectorBase< N, Derived > &  vector) const
Returns
The dot product of *this and vector.

◆ FromStr()

Derived FromStr ( const std::string &  vector_str)
static

Parses vector_str that should come in the following format "{A, B, C, ...}" (white spaces could or could not be there).

Exceptions
maliput::common::assertion_errorWhen vector_str does not follow the specified format.
Returns
An N-dimensional vector filled from vector_str.

◆ norm()

double norm
Returns
A double containing the norm of the vector.

◆ normalize()

void normalize

Divides each vector component by norm().

◆ normalized()

Derived normalized
Returns
A Derived with *this normalized.

◆ Ones()

Derived Ones
static
Returns
An N-dimensional vector filled with ones.

◆ operator!=()

bool operator!= ( const VectorBase< N, Derived > &  vector) const

Inequality operator overload.

◆ operator+()

Derived operator+ ( const VectorBase< N, Derived > &  vector) const

Add operator overload.

◆ operator+=()

Derived & operator+= ( const VectorBase< N, Derived > &  vector)

Add and assignment operator overload.

◆ operator-()

Derived operator- ( const VectorBase< N, Derived > &  vector) const

Substract operator overload.

◆ operator/()

Derived operator/ ( double  scalar) const

Divide operator overload between a VectorBase<N, Derived> vector and a double.

◆ operator=() [1/2]

Derived & operator= ( const VectorBase< N, Derived > &&  other)

Move assignment operator overload.

Parameters
otherDerived object.

◆ operator=() [2/2]

Derived & operator= ( const VectorBase< N, Derived > &  other)

Assignment operator overload.

Parameters
otherDerived object.

◆ operator==()

bool operator== ( const VectorBase< N, Derived > &  vector) const

Equality operator overload.

◆ operator[]() [1/2]

double & operator[] ( std::size_t  index)

Subscripting array operator overload.

Parameters
indexThe index of the vector element.
Returns
A mutable reference to the value at index.
Exceptions
common::assertion_errorWhen index is out of range.

◆ operator[]() [2/2]

double operator[] ( std::size_t  index) const

Constant subscripting array operator overload.

Parameters
indexThe index of the vector element.
Returns
A copy of the value at index.
Exceptions
common::assertion_errorWhen index is out of range.

◆ size()

std::size_t size ( ) const
Returns
The dimension of *this.

◆ to_array()

std::array<double, N> to_array ( ) const
Returns
An array with the values.

◆ to_str()

std::string to_str
Returns
A string serialization of the N-dimensional vector.

◆ Zero()

Derived Zero
static
Returns
An N-dimensional vector filled with zeros.

Friends And Related Function Documentation

◆ operator* [1/2]

Derived_ operator* ( const VectorBase< N_, Derived_ > &  vector,
double  scalar 
)
friend

Product operator overload between a vector and a double.

◆ operator* [2/2]

Derived_ operator* ( double  scalar,
const VectorBase< N_, Derived_ > &  vector 
)
friend

Product operator overload between a double and a vector.

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const VectorBase< N_, Derived_ > &  vector 
)
friend

Insertion operator overload.

Member Data Documentation

◆ kDimension

constexpr std::size_t kDimension {N}
staticconstexpr

The dimension of the vector.

◆ values_

std::array<double, N> values_ {}
protected

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