Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

blank: lid + hinges centered on base midpoint, wider hinge gap

- Lid y-centered on base midpoint (y=hh) instead of y=0
- Barrel hinges also centered on base midpoint
- Hinge gap increased (0.6x) for more visible separation
- Screen/bezel y-coords updated to match lid inner face

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+15 -15
+15 -15
system/public/aesthetic.computer/disks/blank.mjs
··· 127 127 // Dimensions from spec: 293mm × 207mm × 19.9mm 128 128 const hw = 1.44, hh = 0.07, hd = 1.0; 129 129 const lidThick = hh * 0.9; // lid noticeably thinner than base (display panel) 130 - const gap = hh * 0.15; // tiny gap at hinge for clearance 130 + const gap = hh * 0.6; // visible gap at hinge for clearance 131 131 132 132 // Pivot point: at the hinge seam between base and lid (y=0, z=0) 133 133 // When flat at 180°, base extends forward (+z) and lid extends backward (-z) ··· 144 144 145 145 const cosH = cos(hingeAngle), sinH = sin(hingeAngle); 146 146 147 - // Lid in local space: extends UP from y=0 (negative y) 148 - // At 180° (cos=-1): y flips sign → extends DOWN (positive y, same as base) 149 - // Both halves flat and co-planar, both extending downward from y=0 147 + // Lid centered on base midpoint (y=hh) so both halves align when flat 148 + // At 180°: y flips around pivot → lid centered at y=hh, same as base center 149 + const lidMid = hh; // base midpoint 150 150 const lidLocal = [ 151 - [-hw, 0, gap], [hw, 0, gap], 152 - [hw, -lidThick, gap], [-hw, -lidThick, gap], 153 - [-hw, 0, 2 * hd], [hw, 0, 2 * hd], 154 - [hw, -lidThick, 2 * hd], [-hw, -lidThick, 2 * hd], 151 + [-hw, lidMid + lidThick / 2, gap], [hw, lidMid + lidThick / 2, gap], 152 + [hw, lidMid - lidThick / 2, gap], [-hw, lidMid - lidThick / 2, gap], 153 + [-hw, lidMid + lidThick / 2, 2 * hd], [hw, lidMid + lidThick / 2, 2 * hd], 154 + [hw, lidMid - lidThick / 2, 2 * hd], [-hw, lidMid - lidThick / 2, 2 * hd], 155 155 ]; 156 156 157 157 // Rotate lid around pivot (y=0, z=0 in local = pivot point) ··· 169 169 const hingeVerts = []; 170 170 for (const bx of barrelPositions) { 171 171 const bw = barrelW / 2, bh = barrelH / 2, bd = barrelD / 2; 172 - // Barrel local coords (centered on barrel axis) 172 + // Barrel centered on base midpoint (y=hh) 173 173 const barrelLocal = [ 174 - [bx - bw, -bh, -bd], [bx + bw, -bh, -bd], 175 - [bx + bw, bh, -bd], [bx - bw, bh, -bd], 176 - [bx - bw, -bh, bd], [bx + bw, -bh, bd], 177 - [bx + bw, bh, bd], [bx - bw, bh, bd], 174 + [bx - bw, hh - bh, -bd], [bx + bw, hh - bh, -bd], 175 + [bx + bw, hh + bh, -bd], [bx - bw, hh + bh, -bd], 176 + [bx - bw, hh - bh, bd], [bx + bw, hh - bh, bd], 177 + [bx + bw, hh + bh, bd], [bx - bw, hh + bh, bd], 178 178 ]; 179 179 // Rotate barrels with the lid (half the lid angle — they sit at the joint) 180 180 const halfA = hingeAngle * 0.5; ··· 343 343 const bezelInset = 0.08; 344 344 const hingeInset = 0.35; // larger inset at hinge end (away from base) 345 345 // Screen is on the INNER face of the lid (y = 0 in lid local). 346 - const screenY = 0.002; 346 + const screenY = lidMid + lidThick / 2 + 0.002; 347 347 const screenTL = [-hw + inset, screenY, 2 * hd - inset]; 348 348 const screenTR = [hw - inset, screenY, 2 * hd - inset]; 349 349 const screenBL = [-hw + inset, screenY, hingeInset]; 350 350 const screenBR = [hw - inset, screenY, hingeInset]; 351 351 352 352 // Bezel corners (slightly larger than screen) 353 - const bezelY = 0.001; 353 + const bezelY = lidMid + lidThick / 2 + 0.001; 354 354 const bezelTL = [-hw + bezelInset, bezelY, 2 * hd - bezelInset]; 355 355 const bezelTR = [hw - bezelInset, bezelY, 2 * hd - bezelInset]; 356 356 const bezelBL = [-hw + bezelInset, bezelY, hingeInset - 0.07];