An educational app that simultaneously visualizes 3D poses using three representations: quaternions, rotation matrices, and Euler angles.
Misattitude is an educational tool that simultaneously visualizes three mathematical representations of 3D "orientation"—quaternions, rotation matrices, and Euler angles—as the same rotation. Designed to help beginners in all fields dealing with rotation (robotics, SLAM, computer graphics, aerospace, game development, IMU/AR) overcome the common hurdle of having multiple notations for the same rotation, providing an intuitive visual understanding.
■ What it can do
・Synchronized display of 3 representations
No matter which panel (quaternion / rotation matrix / Euler angles) you change a value in, the internal cube and the other two representations instantly update. You can repeat the experience of "viewing the same orientation in three different ways" with each operation.
* Complete Coverage of 12 Euler Orders
Switch between 6 Tait-Bryan order types (XYZ, XZY, YXZ, YZX, ZXY, ZYX) and 6 Proper Euler order types (XYX, XZX, YXY, YZY, ZXZ, ZYZ), for a total of 12 order types. This allows you to instantly reproduce conventions from various fields, such as ZYX in robotics, XYZ in computer graphics, and ZXZ in gyroscope systems.
* Internal/Extrinsic Switching
Switch between intrinsic (performed relative to the body axis viewed from the previous orientation) and extrinsic (performed relative to a stationary world axis) rotations with a single switch. Experience the symmetry of rotation, where the notation changes but the result remains the same.
* Visualization of Gimbal Lock
As the Euler angle approaches a singularity, a warning chip and highlight appear on the screen, allowing you to intuitively confirm the loss of degrees of freedom. You can see how "gimbal lock," which is only described in mathematical formulas in textbooks, actually develops as you move the slider.
* Display of Step Decomposition
Enabling "Show step axes" draws the body axes of the intermediate poses as faded-out auxiliary lines when the three elements of Euler angles are applied sequentially once each. Please use this as teaching material to visually track the three rotations of ZYX intrinsic.
* Comparison Playback of Slerp and Euler-LERP
You can capture the start and end poses and smoothly play and compare them using three interpolation modes (Slerp / Euler-LERP / Step). Enabling "Comparison Ghost" displays the other interpolation trajectory superimposed as a wireframe cube, visually showing that Slerp is a geodesic on SO(3), while Euler-LERP does not take the shortest path.
* 3D rendering is physically based rendering by Google Filament
Filament's high-quality rendering clearly displays translucent cubes, color labels, body axes, and world axes. The camera can be freely controlled with touch gestures (drag, pinch, double-tap to reset).
* Switching between world coordinate system conventions
Preset switching between Y-up right-handed system (OpenGL/Unity) and Z-up right-handed system (ROS/Aerospace). Viewing the same quaternion under different world conventions allows you to experience the invariant principle that "differences in conventions do not change the orientation."
* Visualization of gimbal lock
As the Euler angle approaches a singularity, a warning chip and highlight appear on the screen, allowing you to intuitively confirm the loss of degrees of freedom. You can see the "gimbal lock," which is only described mathematically in textbooks, actually occurring as you move the slider.
* Displaying Step Decomposition
Enabling "Show step axes" displays the body axes of intermediate poses as faded-out guide lines, representing the application of the three elements of Euler angles once each. This can be used as a teaching tool to visually track the three rotations of ZYX intrinsic.
* Comparison Playback of Slerp and Euler-LERP
The start and end poses are captured and smoothly played back and compared using three interpolation modes (Slerp / Euler-LERP / Step). Enabling "Comparison Ghost" overlays the other interpolation trajectory as a wireframe cube, visually demonstrating that Slerp uses geodesics on SO(3) while Euler-LERP does not take the shortest path.
* 3D Rendering with Google Filament's Physically Based Rendering
Filament's high-quality rendering clearly displays translucent cubes, color labels, body axes, and world axes. You can freely control the camera using touch controls (drag, pinch, double-tap to reset).
* Switching World Coordinate System Conventions
Preset switching between Y-up right-handed system (OpenGL/Unity) and Z-up right-handed system (ROS/Aerospace). By viewing the same quaternion under different world conventions, you can experience the invariant that "differences in conventions do not change the pose."
* Three Body Shapes
Choose from a translucent reference cube, a Linux mascot-style penguin, and a robot-style capsule. Since objects with shapes allow for intuitive understanding of "up/down" and "front/back," they are ideal for beginners in robot pose design.
■ Recommended for:
* University Students: Those who want to reinforce their understanding of rotation representation in control engineering, robotics, or computer graphics lectures.
* Engineers: Those who struggle with deciding "which Euler convention to use," "Hamilton or JPL," or "intrinsic or extrinsic" when implementing code.
* Teachers/Instructors: Those who want to demonstrate concepts like "gimbal lock" and "Slerp vs Linear" live, which are difficult to convey through lecture slides alone.
* Hobbyists: Those learning quaternions for the first time who want to overcome the feeling of "understanding the formulas but not intuitively grasping what's happening."
■ Operating Environment
* Android 8.0 (API 26) or higher
* Recommended: A device with an OpenGL ES 3.x compatible GPU (for smooth display of Filament 3D rendering)
■ Privacy
This application operates offline and does not collect or transmit any personal information. Please see the privacy policy for details.
■ Message from the Developer
While the mathematics of rotation representation may seem simple at first glance, it's an area where multiple conventions and rules intersect, often leading to confusion in practical applications. We hope this app will serve as a bridge between mathematical formulas and intuition.