Skip to content
Rotation Converter3D ORIENTATION / TECHNICAL REFERENCE
NO LOGIN / NO JAVASCRIPT REQUIRED

Rotation Converter reference

Use the live converter for interactive calculations. This reference is available as ordinary HTML, including the guides and expected example outputs.

FIELD GUIDE / GETTING STARTED

How to use this tool

An orientation is only useful when its conventions travel with it. Start here, then use the guides to check the details.

  1. 01

    Choose a representation and a convention

    Start in Manual Input. Choose Rotation Matrix, Quaternion, Euler, or Axis-Angle. Passive (C) changes vector coordinates; Active (R) uses the paired transpose convention. For consistent comparisons across interactive and bulk input, begin with Passive. The conventions guide documents the current Active-mode differences.

  2. 02

    Enter one orientation or compose steps

    Interactive mode provides labeled fields. Bulk Import accepts numeric text for one orientation: 9 matrix entries, 4 quaternion components, 3 Euler angles, or 4 axis-angle values. Choose the input units and Euler order before pasting. Sequence mode multiplies the displayed steps right-to-left, with Step 1 acting first on a column vector.

  3. 03

    Convert, then inspect the diagnostics

    Select Convert or Parse and Convert. Check the determinant and orthogonality residual before trusting a matrix. Output units and decimal places are independent controls. Euler output follows the selected sequence, so 321 means Z, Y, X. Near gimbal lock, prefer the matrix or quaternion over rounded Euler coordinates.

  4. 04

    Explore and export without changing the data

    Drag the visualization to change the camera, use its animation slider to inspect intermediate states, and choose a frame or model. Copy numerical output in MATLAB, Python, or Eigen formatting. Use Radians for Eigen::AngleAxisd. PNG, SVG, GIF, and browser-supported video exports are available from the 3D visualizer. CSV and ROS Bag tabs feed attitude playback; optional sign-in preserves conversion history.

Read the complete plain-HTML reference →
CHECK YOUR CONVENTIONS / THREE WORKED EXAMPLES

From numbers to orientation

Verified against the converter’s passive matrices and its visible output formatter. Expected values below use MATLAB format, six decimal places, degrees, and output sequence 321 (ZYX).

01
Single-axis rotation

A quarter-turn about Z

With Passive (C), degrees, and ZYX selected, enter Z = 90, Y = 0, X = 0. The product reduces to C_Z(90°). Multiplying C by [1, 0, 0]ᵀ gives [0, −1, 0]ᵀ: the same vector has new coordinates. Transposing C gives the paired active matrix. The equivalent negative quaternion is [0, 0, −0.707107, −0.707107].

Input · Passive, ZYX, degrees

Z = 90° · Y = 0° · X = 0°

Expected passive matrix

0.000000  1.000000  0.000000
-1.000000  0.000000  0.000000
0.000000  0.000000  1.000000

Quaternion · x, y, z, w

[0.000000, 0.000000, 0.707107, 0.707107]

Euler · Z, Y, X · degrees

[90.000000, 0.000000, 0.000000]

Axis-angle · x, y, z, angle · degrees

[0.000000, 0.000000, 1.000000, 90.000000]

Determinant = 1; orthogonality residual = 0 apart from floating-point roundoff. The ideal zeros in this matrix may appear as very small numbers internally.

Load this example
02
Composed rotation

Three rotations, one orientation

Use Passive (C), degrees, and ZYX with Z = 10, Y = 20, X = 30. The actual product is C_X(30°) C_Y(20°) C_Z(10°). To reproduce it in Sequence mode, create Step 1: Z = 10; Step 2: Y = 20; Step 3: X = 30, with every other angle zero. Step 1 acts first. Reversing those steps generally produces a different result.

Input · Passive, ZYX, degrees

Z = 10° · Y = 20° · X = 30°

Expected passive matrix

0.925417  0.163176  -0.342020
0.018028  0.882564  0.469846
0.378522  -0.440970  0.813798

Quaternion · x, y, z, w

[0.239298, 0.189308, 0.038135, 0.951549]

Euler · Z, Y, X · degrees

[10.000000, 20.000000, 30.000000]

Axis-angle · x, y, z, angle · degrees

[0.778209, 0.615638, 0.124015, 35.817101]

The output Euler vector is [Z, Y, X], not [X, Y, Z]. Rebuilding the passive matrix from these values returns the same matrix to floating-point precision; the output axis-angle expresses the same combined orientation as one rotation.

Load this example
03
Near-gimbal-lock case

When 89.95° is reported as 90°

Use Passive (C), degrees, and ZYX with Z = 0, Y = 89.95, X = 0. The middle angle is close enough to the singularity to trigger the solver’s |sin(β)| ≥ 1 − 10⁻⁶ branch. It sets the displayed middle Euler angle to 90°. The matrix, quaternion, and quaternion-derived axis-angle still encode 89.95°. This is intentional documentation of the existing tolerance, not a change to the solver.

Input · Passive, ZYX, degrees

Z = 0° · Y = 89.95° · X = 0°

Expected passive matrix

0.000873  0.000000  -1.000000
0.000000  1.000000  0.000000
1.000000  0.000000  0.000873

Quaternion · x, y, z, w

[0.000000, 0.706798, 0.000000, 0.707415]

Euler · Z, Y, X · degrees

[0.000000, 90.000000, 0.000000]

Axis-angle · x, y, z, angle · degrees

[0.000000, 1.000000, 0.000000, 89.950000]

A near-singularity warning appears. Reconstructing from [0, 90, 0] differs from the original matrix by about 0.000873 in the largest entry. Use the original matrix or quaternion when that difference matters. At exact lock the first and third angles are not uniquely recoverable.

Load this example