Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

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

blank: key/trackpad wireframe outlines, hide hinges when occluded

- White blinky wireframe outlines on keyboard keys and trackpad
- Hinge barrels hidden when fully behind base+lid
- Add line to paint destructure

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

+21 -4
+21 -4
system/public/aesthetic.computer/disks/blank.mjs
··· 81 81 } 82 82 83 83 function paint($) { 84 - const { wipe, ink, screen, dark: isDark, tri } = $; 84 + const { wipe, ink, line, screen, dark: isDark, tri } = $; 85 85 frame += 1; 86 86 const w = screen.width; 87 87 const h = screen.height; ··· 250 250 addFaces(projBase, baseColor, "base"); 251 251 addFaces(projLid, lidColor, "lid"); 252 252 253 - // Hinge barrels 253 + // Hinge barrels — only draw when not fully behind base+lid 254 254 const hingeColor = isDark ? [32, 32, 35] : [45, 45, 48]; 255 + const baseMinZ = min(...projBase.map(v => v[2])); 256 + const lidMinZ = min(...projLid.map(v => v[2])); 255 257 for (const hv of hingeVerts) { 256 258 const projH = hv.map(project); 257 - addFaces(projH, hingeColor, "hinge", false); 259 + const hingeMaxZ = max(...projH.map(v => v[2])); 260 + // Only add if hinge pokes out in front of at least one body 261 + if (hingeMaxZ > baseMinZ || hingeMaxZ > lidMinZ) { 262 + addFaces(projH, hingeColor, "hinge"); 263 + } 258 264 } 259 265 260 266 // Keyboard keys (on base top face, y = -0.001 just above y=0) ··· 344 350 }; 345 351 addEdges(projBase); 346 352 addEdges(projLid); 347 - for (const hv of hingeVerts) addEdges(hv.map(project)); 353 + for (const hv of hingeVerts) { 354 + const projH = hv.map(project); 355 + const hingeMaxZ = max(...projH.map(v => v[2])); 356 + if (hingeMaxZ > baseMinZ || hingeMaxZ > lidMinZ) addEdges(projH); 357 + } 348 358 349 359 // Sort back-to-front (highest z = farthest = draw first) 350 360 drawList.sort((a, b) => b.z - a.z); ··· 376 386 ink(c[0], c[1], c[2]); 377 387 tri(x0, y0, x1, y1, x2, y2); 378 388 tri(x0, y0, x2, y2, x3, y3); 389 + // White blinky wireframe outline 390 + const blink = sin(frame * 0.08 + x0 * 0.3 + y0 * 0.7) * 0.5 + 0.5; 391 + ink(255, 255, 255, floor(30 + blink * 50)); 392 + line(x0, y0, x1, y1); 393 + line(x1, y1, x2, y2); 394 + line(x2, y2, x3, y3); 395 + line(x3, y3, x0, y0); 379 396 } 380 397 } 381 398