![]() |
Visual Servoing Platform
version 3.3.0
|
#include <vpQuaternionVector.h>
Public Member Functions | |
vpQuaternionVector () | |
vpQuaternionVector (const vpQuaternionVector &q) | |
vpQuaternionVector (const double qx, const double qy, const double qz, const double qw) | |
vpQuaternionVector (const vpRotationMatrix &R) | |
vpQuaternionVector (const vpThetaUVector &tu) | |
vpQuaternionVector (const vpColVector &q) | |
vpQuaternionVector (const std::vector< double > &q) | |
virtual | ~vpQuaternionVector () |
vpQuaternionVector | buildFrom (const double qx, const double qy, const double qz, const double qw) |
vpQuaternionVector | buildFrom (const vpRotationMatrix &R) |
vpQuaternionVector | buildFrom (const vpThetaUVector &tu) |
vpQuaternionVector | buildFrom (const vpColVector &q) |
vpQuaternionVector | buildFrom (const std::vector< double > &q) |
void | set (double x, double y, double z, double w) |
double | x () const |
double | y () const |
double | z () const |
double | w () const |
vpQuaternionVector | operator+ (const vpQuaternionVector &q) const |
vpQuaternionVector | operator- (const vpQuaternionVector &q) const |
vpQuaternionVector | operator- () const |
vpQuaternionVector | operator* (double l) const |
vpQuaternionVector | operator* (const vpQuaternionVector &rq) const |
vpQuaternionVector | operator/ (double l) const |
vpQuaternionVector & | operator= (const vpColVector &q) |
vpQuaternionVector & | operator= (const vpQuaternionVector &q)=default |
vpQuaternionVector & | operator= (const std::initializer_list< double > &list) |
vpQuaternionVector | conjugate () const |
vpQuaternionVector | inverse () const |
double | magnitude () const |
void | normalize () |
bool | operator== (const vpArray2D< float > &A) const |
Inherited functionalities from vpArray2D | |
unsigned int | getCols () const |
double | getMaxValue () const |
double | getMinValue () const |
unsigned int | getRows () const |
unsigned int | size () const |
void | resize (unsigned int nrows, unsigned int ncols, bool flagNullify=true, bool recopy_=true) |
void | reshape (unsigned int nrows, unsigned int ncols) |
bool | operator== (const vpArray2D< double > &A) const |
bool | operator!= (const vpArray2D< double > &A) const |
vpArray2D< double > | hadamard (const vpArray2D< double > &m) const |
Static Public Member Functions | |
Inherited I/O from vpArray2D with Static Public Member Functions | |
static bool | load (const std::string &filename, vpArray2D< double > &A, bool binary=false, char *header=NULL) |
static bool | loadYAML (const std::string &filename, vpArray2D< double > &A, char *header=NULL) |
static bool | save (const std::string &filename, const vpArray2D< double > &A, bool binary=false, const char *header="") |
static bool | saveYAML (const std::string &filename, const vpArray2D< double > &A, const char *header="") |
Public Attributes | |
double * | data |
Protected Attributes | |
unsigned int | rowNum |
unsigned int | colNum |
double ** | rowPtrs |
unsigned int | dsize |
Related Functions | |
(Note that these are not member functions.) | |
vpColVector | operator* (const double &x, const vpRotationVector &v) |
enum | vpGEMMmethod |
void | vpGEMM (const vpArray2D< double > &A, const vpArray2D< double > &B, const double &alpha, const vpArray2D< double > &C, const double &beta, vpArray2D< double > &D, const unsigned int &ops=0) |
Inherited functionalities from vpRotationVector | |
double & | operator[] (unsigned int i) |
const double & | operator[] (unsigned int i) const |
vpRotationVector & | operator<< (double val) |
vpRotationVector & | operator, (double val) |
double | sumSquare () const |
vpRowVector | t () const |
std::vector< double > | toStdVector () |
unsigned int | m_index |
Implementation of a rotation vector as quaternion angle minimal representation.
Defines a quaternion and its basic operations.
The vpQuaternionVector class is derived from vpRotationVector.
A quaternion is defined by four double values: .
This class allows to compute a quaternion from a rotation matrix using either vpQuaternionVector(const vpRotationMatrix &) constructor or buildFrom() method.
It also defines common operations on a quaternion such as:
You can set values accessing each element:
You can also initialize the vector using operator<<(double):
Or you can also initialize the vector from a list of doubles if ViSP is build with c++11 enabled:
To get the values use:
or use getter:
Definition at line 111 of file vpQuaternionVector.h.
vpQuaternionVector::vpQuaternionVector | ( | ) |
Default constructor that initialize all the 4 angles to zero.
Definition at line 54 of file vpQuaternionVector.cpp.
Referenced by conjugate(), operator*(), operator+(), operator-(), and operator/().
vpQuaternionVector::vpQuaternionVector | ( | const vpQuaternionVector & | q | ) |
Copy constructor.
Definition at line 57 of file vpQuaternionVector.cpp.
vpQuaternionVector::vpQuaternionVector | ( | const double | qx, |
const double | qy, | ||
const double | qz, | ||
const double | qw | ||
) |
|
explicit |
Constructs a quaternion from a rotation matrix.
R | : Matrix containing a rotation. |
Definition at line 83 of file vpQuaternionVector.cpp.
References buildFrom().
|
explicit |
Constructor that initialize Euler angles vector from a
vector.
tu | : ![]() |
Definition at line 91 of file vpQuaternionVector.cpp.
References buildFrom().
|
explicit |
Constructor from a 4-dimension vector of doubles.
Definition at line 67 of file vpQuaternionVector.cpp.
References buildFrom().
|
explicit |
Constructor from a 4-dimension vector of doubles.
Definition at line 73 of file vpQuaternionVector.cpp.
References buildFrom().
|
inlinevirtual |
Destructor.
Definition at line 126 of file vpQuaternionVector.h.
vpQuaternionVector vpQuaternionVector::buildFrom | ( | const double | qx, |
const double | qy, | ||
const double | qz, | ||
const double | qw | ||
) |
Manually change values of a quaternion.
qx | : x quaternion parameter. |
qy | : y quaternion parameter. |
qz | : z quaternion parameter. |
qw | : w quaternion parameter. |
Definition at line 116 of file vpQuaternionVector.cpp.
References set().
Referenced by buildFrom(), vpHomogeneousMatrix::extract(), vpPoseVector::extract(), and vpQuaternionVector().
vpQuaternionVector vpQuaternionVector::buildFrom | ( | const std::vector< double > & | q | ) |
Construct a quaternion vector from a 4-dim vector (x,y,z,w).
Definition at line 154 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data, and vpException::dimensionError.
vpQuaternionVector vpQuaternionVector::buildFrom | ( | const vpColVector & | q | ) |
Construct a quaternion vector from a 4-dim vector (x,y,z,w).
Definition at line 139 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, and vpArray2D< Type >::size().
vpQuaternionVector vpQuaternionVector::buildFrom | ( | const vpRotationMatrix & | R | ) |
Constructs a quaternion from a rotation matrix.
R | : Rotation matrix. |
Definition at line 257 of file vpQuaternionVector.cpp.
References vpThetaUVector::extract(), and set().
vpQuaternionVector vpQuaternionVector::buildFrom | ( | const vpThetaUVector & | tu | ) |
Convert a vector into a quaternion.
tu | : ![]() |
Definition at line 128 of file vpQuaternionVector.cpp.
References buildFrom().
vpQuaternionVector vpQuaternionVector::conjugate | ( | ) | const |
Quaternion conjugate.
Definition at line 276 of file vpQuaternionVector.cpp.
References vpQuaternionVector(), w(), x(), y(), and z().
Referenced by inverse().
|
inlineinherited |
Return the number of columns of the 2D array.
Definition at line 279 of file vpArray2D.h.
|
inherited |
Return the array max value.
Definition at line 281 of file vpArray2D.h.
|
inherited |
Return the array min value.
Definition at line 283 of file vpArray2D.h.
|
inlineinherited |
Return the number of rows of the 2D array.
Definition at line 289 of file vpArray2D.h.
Compute the Hadamard product (element wise matrix multiplication).
m | : Second matrix; |
Definition at line 519 of file vpArray2D.h.
vpQuaternionVector vpQuaternionVector::inverse | ( | ) | const |
Quaternion inverse.
Definition at line 283 of file vpQuaternionVector.cpp.
References conjugate(), vpMath::nul(), w(), x(), y(), and z().
|
inlinestaticinherited |
Load a matrix from a file.
filename | : Absolute file name. |
A | : Array to be loaded |
binary | : If true the matrix is loaded from a binary file, else from a text file. |
header | : Header of the file is loaded in this parameter. |
Definition at line 541 of file vpArray2D.h.
|
inlinestaticinherited |
Load an array from a YAML-formatted file.
filename | : absolute file name. |
A | : array to be loaded from the file. |
header | : header of the file is loaded in this parameter. |
Definition at line 653 of file vpArray2D.h.
double vpQuaternionVector::magnitude | ( | ) | const |
Quaternion magnitude or norm.
Definition at line 302 of file vpQuaternionVector.cpp.
References w(), x(), y(), and z().
Referenced by normalize().
void vpQuaternionVector::normalize | ( | ) |
Normalize the quaternion.
Definition at line 307 of file vpQuaternionVector.cpp.
References magnitude(), vpMath::nul(), set(), w(), x(), y(), and z().
Not equal to comparison operator of a 2D array.
Definition at line 411 of file vpArray2D.h.
vpQuaternionVector vpQuaternionVector::operator* | ( | const vpQuaternionVector & | rq | ) | const |
Multiply two quaternions.
Definition at line 199 of file vpQuaternionVector.cpp.
References vpQuaternionVector(), w(), x(), y(), and z().
vpQuaternionVector vpQuaternionVector::operator* | ( | double | l | ) | const |
Multiplication by scalar. Returns a quaternion defined by (lx,ly,lz,lw).
Definition at line 193 of file vpQuaternionVector.cpp.
References vpQuaternionVector(), w(), x(), y(), and z().
vpQuaternionVector vpQuaternionVector::operator+ | ( | const vpQuaternionVector & | q | ) | const |
Quaternion addition.
Adds two quaternions. Addition is component-wise.
q | : quaternion to add. |
Definition at line 173 of file vpQuaternionVector.cpp.
References vpQuaternionVector(), w(), x(), y(), and z().
|
inherited |
Set vector second and third element values.
val | : Value of the vector element [rad]. |
The following example shows how to initialize a vector from a list of 3 values [rad].
It produces the following printings:
Definition at line 162 of file vpRotationVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, vpRotationVector::m_index, and vpArray2D< double >::size().
vpQuaternionVector vpQuaternionVector::operator- | ( | void | ) | const |
Negate operator. Returns a quaternion defined by (-x,-y,-z-,-w).
Definition at line 190 of file vpQuaternionVector.cpp.
References vpQuaternionVector(), w(), x(), y(), and z().
vpQuaternionVector vpQuaternionVector::operator- | ( | const vpQuaternionVector & | q | ) | const |
Quaternion subtraction.
Substracts a quaternion from another. Subtraction is component-wise.
q | : quaternion to subtract. |
Definition at line 184 of file vpQuaternionVector.cpp.
References vpQuaternionVector(), w(), x(), y(), and z().
vpQuaternionVector vpQuaternionVector::operator/ | ( | double | l | ) | const |
Division by scalar. Returns a quaternion defined by (x/l,y/l,z/l,w/l).
Definition at line 208 of file vpQuaternionVector.cpp.
References vpException::fatalError, vpMath::nul(), vpQuaternionVector(), w(), x(), y(), and z().
|
inherited |
Set vector first element value.
val | : Value of the vector first element [rad]. |
The following example shows how to initialize a vector from a list of 3 values [rad].
It produces the following printings:
Definition at line 132 of file vpRotationVector.cpp.
References vpArray2D< double >::data, and vpRotationVector::m_index.
vpQuaternionVector & vpQuaternionVector::operator= | ( | const std::initializer_list< double > & | list | ) |
Set vector from a list of 4 double angle values.
It produces the following printings:
Definition at line 342 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, and vpArray2D< double >::size().
vpQuaternionVector & vpQuaternionVector::operator= | ( | const vpColVector & | q | ) |
Copy operator that initializes a quaternion vector from a 4-dimension column vector q.
q | : 4-dimension vector containing the values of the quaternion vector. |
Definition at line 240 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, and vpArray2D< Type >::size().
|
default |
Equal to comparison operator of a 2D array.
Definition at line 407 of file vpArray2D.h.
Definition at line 979 of file vpArray2D.h.
|
inlineinherited |
Operator that allows to set the value of an element of the rotation vector: r[i] = value
Definition at line 127 of file vpRotationVector.h.
|
inlineinherited |
Operator that allows to get the value of an element of the rotation vector: value = r[i]
Definition at line 132 of file vpRotationVector.h.
|
inlineinherited |
Definition at line 380 of file vpArray2D.h.
|
inlineinherited |
Set the size of the array and initialize all the values to zero.
nrows | : number of rows. |
ncols | : number of column. |
flagNullify | : if true, then the array is re-initialized to 0 after resize. If false, the initial values from the common part of the array (common part between old and new version of the array) are kept. Default value is true. |
recopy_ | : if true, will perform an explicit recopy of the old data if needed and if flagNullify is set to false. |
Definition at line 305 of file vpArray2D.h.
|
inlinestaticinherited |
Save a matrix to a file.
filename | : Absolute file name. |
A | : Array to be saved. |
binary | : If true the matrix is saved in a binary file, else a text file. |
header | : Optional line that will be saved at the beginning of the file. |
Warning : If you save the matrix as in a text file the precision is less than if you save it in a binary file.
Definition at line 738 of file vpArray2D.h.
|
inlinestaticinherited |
Save an array in a YAML-formatted file.
filename | : absolute file name. |
A | : array to be saved in the file. |
header | : optional lines that will be saved at the beginning of the file. Should be YAML-formatted and will adapt to the indentation if any. |
Here is an example of outputs.
Content of matrix.yml:
Content of matrixIndent.yml:
Definition at line 831 of file vpArray2D.h.
void vpQuaternionVector::set | ( | double | qx, |
double | qy, | ||
double | qz, | ||
double | qw | ||
) |
Manually change values of a quaternion.
qx | : x quaternion parameter. |
qy | : y quaternion parameter. |
qz | : z quaternion parameter. |
qw | : w quaternion parameter. |
Definition at line 100 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data.
Referenced by buildFrom(), normalize(), and vpQuaternionVector().
|
inlineinherited |
Return the number of elements of the 2D array.
Definition at line 291 of file vpArray2D.h.
|
inherited |
Return the sum square of all the elements of the rotation vector r(m).
Definition at line 178 of file vpRotationVector.cpp.
References vpArray2D< double >::rowNum, and vpArray2D< double >::rowPtrs.
|
inherited |
Return the transpose of the rotation vector.
Definition at line 56 of file vpRotationVector.cpp.
References vpArray2D< double >::data, and vpArray2D< double >::dsize.
|
inherited |
Converts the vpRotationVector to a std::vector.
Definition at line 70 of file vpRotationVector.cpp.
References vpArray2D< double >::data, and vpArray2D< double >::size().
double vpQuaternionVector::w | ( | ) | const |
Returns w-component of the quaternion.
Definition at line 322 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data.
Referenced by vpRotationMatrix::buildFrom(), conjugate(), inverse(), magnitude(), normalize(), operator*(), operator+(), operator-(), and operator/().
double vpQuaternionVector::x | ( | ) | const |
Returns x-component of the quaternion.
Definition at line 316 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data.
Referenced by vpRotationMatrix::buildFrom(), conjugate(), inverse(), magnitude(), normalize(), operator*(), operator+(), operator-(), and operator/().
double vpQuaternionVector::y | ( | ) | const |
Returns y-component of the quaternion.
Definition at line 318 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data.
Referenced by vpRotationMatrix::buildFrom(), conjugate(), inverse(), magnitude(), normalize(), operator*(), operator+(), operator-(), and operator/().
double vpQuaternionVector::z | ( | ) | const |
Returns z-component of the quaternion.
Definition at line 320 of file vpQuaternionVector.cpp.
References vpArray2D< double >::data.
Referenced by vpRotationMatrix::buildFrom(), conjugate(), inverse(), magnitude(), normalize(), operator*(), operator+(), operator-(), and operator/().
|
related |
Allows to multiply a scalar by rotaion vector.
Definition at line 102 of file vpRotationVector.cpp.
|
related |
This function performs generalized matrix multiplication: D = alpha*op(A)*op(B) + beta*op(C), where op(X) is X or X^T. Operation on A, B and C matrices is described by enumeration vpGEMMmethod().
For example, to compute D = alpha*A^T*B^T+beta*C we need to call :
If C is not used, vpGEMM must be called using an empty array null. Thus to compute D = alpha*A^T*B, we have to call:
vpException::incorrectMatrixSizeError | if the sizes of the matrices do not allow the operations. |
A | : An array that could be a vpMatrix. |
B | : An array that could be a vpMatrix. |
alpha | : A scalar. |
C | : An array that could be a vpMatrix. |
beta | : A scalar. |
D | : The resulting array that could be a vpMatrix. |
ops | : A scalar describing operation applied on the matrices. Possible values are the one defined in vpGEMMmethod(): VP_GEMM_A_T, VP_GEMM_B_T, VP_GEMM_C_T. |
|
related |
Enumeration of the operations applied on matrices in vpGEMM() function.
Operations are :
|
protectedinherited |
Number of columns in the array.
Definition at line 137 of file vpArray2D.h.
|
inherited |
Address of the first element of the data array.
Definition at line 145 of file vpArray2D.h.
|
protectedinherited |
Current array size (rowNum * colNum)
Definition at line 141 of file vpArray2D.h.
|
protectedinherited |
Definition at line 161 of file vpRotationVector.h.
Referenced by vpRotationVector::operator,(), and vpRotationVector::operator<<().
|
protectedinherited |
Number of rows in the array.
Definition at line 135 of file vpArray2D.h.
|
protectedinherited |
Address of the first element of each rows.
Definition at line 139 of file vpArray2D.h.