39 #include <visp3/core/vpRxyzVector.h>
91 double COEF_MIN_ROT = 1e-6;
94 if ((fabs(R[1][2]) < COEF_MIN_ROT) && (fabs(R[2][2]) < COEF_MIN_ROT))
97 phi = atan2(-R[1][2], R[2][2]);
100 double co = cos(phi);
101 double theta = atan2(R[0][2], -si * R[1][2] + co * R[2][2]);
102 double psi = atan2(co * R[1][0] + si * R[2][0], co * R[1][1] + si * R[2][1]);
142 if (rxyz.
size() != 3) {
146 for (
unsigned int i = 0; i < 3; i++)
157 if (rxyz.size() != 3) {
161 for (
unsigned int i = 0; i < 3; i++)
188 for (
unsigned int i = 0; i <
dsize; i++)
219 if (rxyz.
size() != 3) {
223 for (
unsigned int i = 0; i < 3; i++)
248 if (list.size() >
size()) {
251 "Cannot set Euler x-y-z vector out of bounds. It has only %d values while you try to initialize with %d values",
252 size(), list.size()));
254 std::copy(list.begin(), list.end(),
data);
double * data
Address of the first element of the data array.
unsigned int dsize
Current array size (rowNum * colNum)
unsigned int size() const
Return the number of elements of the 2D array.
Implementation of column vector and the associated operations.
error that can be emitted by ViSP classes.
@ dimensionError
Bad dimension.
Implementation of a rotation matrix and operations on such kind of matrices.
vpRotationMatrix buildFrom(const vpHomogeneousMatrix &M)
Implementation of a generic rotation vector.
Implementation of a rotation vector as Euler angle minimal representation.
vpRxyzVector buildFrom(const vpRotationMatrix &R)
vpRxyzVector & operator=(const vpColVector &rxyz)
Implementation of a rotation vector as axis-angle minimal representation.