medieval-kit/my-registry/models/oak-tankard
CRT 01d00cdd26 Give the tankard a handle you could hold, and the lantern one at all
Both models had something in the place a handle belongs, and against a
photograph neither was a handle.

The tankard's was a flat box put through `bendGeometry` and then pushed
clear of the body by a hand-derived offset. Measured, the result stood
7 mm proud of a body 47 mm in radius, with the rest buried in the stave
wall -- no finger gap at all, which is why it read as a plank glued to the
side. The offset formula did not describe what `bendGeometry` does to the
geometry, and rather than deriving a better correction for a curve that
cannot be inspected, the handle is now an actual arc from
`arcBarGeometry`, specified by the two things that matter: where the ends
land and how far the belly stands off. It now stands 24 mm clear. The
proportions go with it -- the reference is a fist-sized vessel, ours was a
beaker.

The lantern's was a horizontal `bandGeometry` ring sitting on the flue: a
suspension eye, not a bail. A lantern is defined by being carried, so the
bail is the first thing the eye looks for. It is now a vertical arch whose
sweep runs about 20 degrees past a half circle at each end, which turns the
ends downwards and outwards so they cross the roof cone instead of sitting
tangent to it -- a clean half circle was rejected by the support check as
floating, correctly.

Removing the ring stranded the tongue that used to join it to the flue, and
leaving it in place produced the z-fight: its sides sat at z = +-0.00488
against the bail's +-0.00512, a quarter of a millimetre apart across the
whole apex. A bail that reaches into the roof needs no strap to hold it on.

Worth recording how that one was found. The first guess was that
`arcBarGeometry` self-intersects once the sweep passes PI. Building the
bail in isolation across six sweeps and segment counts gave 0 overlaps
every time, which killed the theory before any time went into fixing the
wrong thing.

27 models, 17433 triangles, all checks pass, 0 floating cases.
2026-08-22 11:54:54 +07:00
..
model.ts Give the tankard a handle you could hold, and the lantern one at all 2026-08-22 11:54:54 +07:00