1 function euler = Quat2Euler(q)
\r
4 % Copyright (c) 2014 Samsung Electronics Co., Ltd.
\r
6 % Licensed under the Apache License, Version 2.0 (the "License");
\r
7 % you may not use this file except in compliance with the License.
\r
8 % You may obtain a copy of the License at
\r
10 % http://www.apache.org/licenses/LICENSE-2.0
\r
12 % Unless required by applicable law or agreed to in writing, software
\r
13 % distributed under the License is distributed on an "AS IS" BASIS,
\r
14 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
15 % See the License for the specific language governing permissions and
\r
16 % limitations under the License.
\r
18 % Converts a quaternion orientation to ZYX Euler angles where phi is a
\r
19 % rotation around X, theta around Y and psi around Z.
\r
21 R(1,1,:) = 2.*q(:,1).^2-1+2.*q(:,2).^2;
\r
22 R(2,1,:) = 2.*(q(:,2).*q(:,3)-q(:,1).*q(:,4));
\r
23 R(3,1,:) = 2.*(q(:,2).*q(:,4)+q(:,1).*q(:,3));
\r
24 R(3,2,:) = 2.*(q(:,3).*q(:,4)-q(:,1).*q(:,2));
\r
25 R(3,3,:) = 2.*q(:,1).^2-1+2.*q(:,4).^2;
\r
27 phi = atan2(R(3,2,:), R(3,3,:) );
\r
28 theta = -atan(R(3,1,:) ./ sqrt(1-R(3,1,:).^2) );
\r
29 psi = atan2(R(2,1,:), R(1,1,:) );
\r
31 euler = [phi(1,:)' theta(1,:)' psi(1,:)'];
\r