There is a flaw in the test suite. It tests the values in rpy2r rather than the results rpy from the solver's function. Also, the tolerance needs to be widened a bit.
Actually that's not a flaw, William. Since it is not always possible to determine the exact three original angles. In the second test case for instance, there are infinite solutions due to a singularity. Therefore, he tests the rotation matrix since it will be equal for all possible solutions.
It's interesting that a precision error allows you to recover the original angles: atan2(cos(pi/2)*sin(pi/3),cos(pi/2)*cos(pi/3)) amazingly returns pi/3, which obviously should not be true since atan2(0,0) = 0 (?). The issue seems to be that cos(pi/2) is not zero (due to an approximation error), but just a really small value close to zero.
823 Solvers
190 Solvers
376 Solvers
Matrix with different incremental runs
253 Solvers
Permute diagonal and antidiagonal
226 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!