Documentation

This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

quat2angle

Convert quaternion to rotation angles

Syntax

`[r1 r2 r3] = quat2angle(q)[r1 r2 r3] = quat2angle(q, s)`

Description

`[r1 r2 r3] = quat2angle(q)` calculates the set of rotation angles, `r1`, `r2`, `r3`, for a given quaternion, `q`. `q` is an `m`-by-4 matrix containing `m` quaternions. Each element of `q` must be a real number. `q` has its scalar number as the first column.

Rotation angles are output in radians.

`r1`

Returns an `m` array of first rotation angles.

`r2`

Returns an `m` array of second rotation angles.

`r3`

Returns an `m` array of third rotation angles.

`[r1 r2 r3] = quat2angle(q, s)` calculates the set of rotation angles, `r1`, `r2`, `r3`, for a given quaternion, `q`, and a specified rotation sequence, `s`.

The default rotation sequence is `'ZYX'`, where `r1` is `z`-axis rotation, `r2` is `y`-axis rotation, and `r3` is `x`-axis rotation.

Supported rotation sequences are `'ZYX'`, `'ZYZ'`, `'ZXY'`, `'ZXZ'`, `'YXZ'`, `'YXY'`, `'YZX'`, `'YZY'`, `'XYZ'`, `'XYX'`, `'XZY'`, and `'XZX'`.

Examples

Determine the rotation angles from q = [1 0 1 0].

```[yaw, pitch, roll] = quat2angle([1 0 1 0]) yaw = 0 pitch = 1.5708 roll = 0```

Determine the rotation angles from multiple quaternions.

```q = [1 0 1 0; 1 0.5 0.3 0.1]; [pitch, roll, yaw] = quat2angle(q, 'YXZ') pitch = 1.5708 0.8073 roll = 0 0.7702 yaw = 0 0.5422```

Assumptions and Limitations

The limitations for the `'ZYX'`, `'ZXY'`, `'YXZ'`, `'YZX'`, `'XYZ'`, and `'XZY'` implementations generate an `r2` angle that lies between ±90 degrees, and `r1` and `r3` angles that lie between ±180 degrees.

The limitations for the `'ZYZ'`, `'ZXZ'`, `'YXY'`, `'YZY'`, `'XYX'`, and `'XZX'` implementations generate an `r2` angle that lies between 0 and 180 degrees, and `r1` and `r3` angles that lie between ±180 degrees.