Skip to content

fixed v1.1.0 — the wide AABB operations a real consumer needed

Choose a tag to compare

@rowan-claude rowan-claude released this 26 Jul 17:03
· 38 commits to main since this release
af73ce2

Adds two wide-AABB operations. Additions only — backward compatible, both frozen hashes unchanged.

fixMakeAABBWideAt( points, count, radius, origin ) build a wide box from local points placed at a wide origin
fixAABBWide_Transform( transform, box ) transform a wide box by a local transform

How they were found

By trying to wire box3d's ludicrous build to this library and failing to compile. The wide AABB surface looked complete and was not:

  • fixMakeAABBWide takes an array of wide points. Real consumers build boxes from local mesh and hull vertices placed at a wide origin — vertices stay Q48.16 even when the body sits a light-year out. That is a different function, not a different call.
  • fixAABBWide_Transform did not exist at all.

Inherited limitation, stated rather than papered over

The transform narrows the centre to local range, so a box whose centre exceeds Q48.16 saturates. Extents survive at any distance — that is the fixAABBWide_Extents fix from v1.0.0 — but a transform about a distant centre does not. This matches the behaviour it was ported from, so it is a faithful port and not a regression. A wide-centre formulation belongs in its own change with its own goldens.

Verification

Both new functions are exercised by test/aabb_test.c — a header-only function nothing calls is invisible to a passing build. Proven able to fail: dropping the abs from the rotation matrix breaks three checks, including the never-shrinks property that would matter in a broadphase.

fixed-core determinism   0x3e1c7997594d2019
wide boundary            0xeedc16ea642ffb5f