Below is a demonstration of the features of the DCM2euler function
clear; close all; clc;
This function is the inverse of the euler2DCM function. The Euler angles a are derived based on the input rotatin tensor Q.
Retrieving the Euler andles from a rotation tensor
Get example patch data
Defining sets of true Euler angles for X, Y and Z axis rotation
a_true=[0.25*pi 0.25*pi -0.25*pi]
a_true = 0.7854 0.7854 -0.7854
Use euler2DCM function to define the rotation tensor
Use DCM2euler to retrieve the Euler angles
a_fit = 0.7854 0.7854 -0.7854
Handling symbolic expressions
try syms a b c a_true=[a b c] Q=euler2DCM(a_true); a_fit=DCM2euler(Q) catch warning('Symbolic toolbox likely missing') end
a_true = [ a, b, c] a_fit = [ -atan2(-cos(b)*sin(a), cos(a)*cos(b)), -atan2(-sin(b), (cos(a)^2*cos(b)^2 + cos(b)^2*sin(a)^2)^(1/2)), -atan2(-cos(b)*sin(c), cos(b)*cos(c))]
Kevin Mattheus Moerman, [email protected]
GIBBON footer text
GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.
Copyright (C) 2019 Kevin Mattheus Moerman
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.