The labels in the previous commit were swapped. With the wrapper
rotated -π/2 around Y so the nose points -X, the plane's longitudinal
axis is world X (so rotation.x is roll) and its lateral axis is
world Z (so rotation.z is pitch). Earlier code applied "roll"
(positive 0.18) to .z, which was actually pitching the nose down —
no amount of tweaking rotation.x could compensate, hence the user
seeing the plane go forward+down even after sign flips.
Now:
- rotation.z = -0.30 - p·0.05 (nose up ~17–20°, climb attitude)
- rotation.x = 0.12 + small variation (subtle roll)
- rotation.y = 0 (no yaw, plane already heading the right way)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>