Beer–Lambert through the wall. This is the picture the lamp makes, and it is not the heightfield: the map is exponential, so the thin end spreads and the thick end crushes.
Beer–Lambert through the wall. This is the picture the lamp makes, and it is not the heightfield: the map is exponential, so the thin end spreads and the thick end crushes.
The internal column the Xiaomi Mijia Night Light 3 drops into — v3, generated at whatever height the shell is, which is the one dimension of it that tracks the shell. Its cross-section never moves: bore 63.26 mm and a Ø72.0 foot, both settled by prints.
Print it in spiral vase mode, extrusion width 0.80 mm, 0 bottom layers, brim on. That is not a preference: vase mode lays one bead along the outer contour, so the bore comes out at outer − 2 × width, and the profile is dimensioned backwards from it. Printed any other way the bore is 1.6 mm too small. Vase mode also has no seam at all, which is what the ragged flank on v1 and v2 was.
0.12 mm layers, 100 % infill, Concentric, wall loops to maximum, white PLA, brim, no supports. Vase mode is impossible — the wall thickness is the picture. Do not scale the STL in the slicer: scaling changes the wall, which is the tone map.
On the outward shell, paint the seam. The picture's own hard edges are sharper corners than any groove the wall can afford, so the seam channel loses to them on almost every layer.
A JavaScript port of the lamp path of painting2model, verified field by field against cylinder.py: worst deviation anywhere on the object 1.1e-5 mm, which is 3e-5 of a bead. The reference's own sort ambiguity moves it 170 times further than the port does.
Everything runs in this page. No upload, no server, no network.
It is the lamp path of a longer write-up: the build guide takes a painting to a flat panel, and From Panel to Cylinder is where this shell, its seam and the printed pair that settled which way the relief faces are worked out.
painting2ball is the same idea on a sphere: a hanging ornament instead of a lamp, and a harder mapping — no rectangle meets a sphere without distortion, so the projection becomes a choice you make.