Rotation Lab

One object. Two ways to turn it. Explore the difference, then match the pose.

Drag a slider to preview a rotation. Set rotation keeps this pose and starts a new rotation from it.

Euler angles

Explore
Fixed axes · X → Y → Z0 rotations set
Euler axes are independent.

Preview is X, then Y, then Z about fixed world axes. Order matters.

Axis–angle / quaternion

Explore
Amber vector = rotation axis0 rotations set
The axis is normalized automatically.

X, Y, Z choose a direction from the origin. Angle turns the object around it.

X axisY axisZ axisLong nose = +X · raised fin = +Y
How rotations compose & what the numbers mean

The sliders describe one pending rotation. Set rotation applies it to the saved pose and resets those sliders. New rotations act about the fixed world axes, so the new rotation multiplies on the left: qtotal = qnew × qsaved. Undo set removes the most recently saved rotation.

Euler uses the explicit fixed-axis order X → Y → Z, equivalent to R = Rz · Ry · Rx. At Y = ±90°, the effective X and Z rotation axes align: this is gimbal lock. The object can still rotate, but the Euler controls lose one independent direction. Set rotation starts a fresh Euler increment; it does not erase the singularity of the parameterization.

The four right-hand sliders are axis–angle controls, not four independent quaternion components. With a unit axis u and angle θ, the quaternion is q = (uₓ sin(θ/2), uᵧ sin(θ/2), u𝓏 sin(θ/2), cos(θ/2)). A zero vector has no direction, so choose at least one nonzero component. Quaternion signs q and −q represent the same orientation.

In the challenge, the fixed side alternates every round. Match the complete orientation, not just the nose direction. Both views use the same camera and asymmetric object, and the score measures the shortest 3D rotation between them.

References: quaternions · Euler angles and gimbal lock.