4.9 KiB
4.9 KiB
Roadmap
Open ideas for the playground frontend. Tick a box when done.
Quick wins
- Labyrinth grid size crash:
labyrinth.component.htmlstill binds[gridRows]; typed sizes above the max crash the page. Same fix as pathfinding (clamp in code, drop the binding). - Fourier circles slider thumb: at "Circles: 256" the thumb sits near the left end, like at 30. Check
max/value binding of the circlesmat-slider(seen 2026-10-14, not verified). - Lighthouse gate: add an
assertblock tolighthouserc.json(e.g. performance, accessibility, SEO >= 0.9). Today CI runs the audit but never fails. Note: the@lhci/cli→ lighthouse 13 override inpackage.jsonis only safe withoutassert. Check it again before you add one. - robots.txt + sitemap.xml: static files in
public/, listing all routes fromapp.routes.ts. - SEO per algorithm page: all algorithm routes use
data: { seo: 'ALGORITHMS' }. Give each one its own key and addSEO.<KEY>.TITLE/DESCRIPTIONtoen.jsonandde.json. - nginx security headers: no CSP,
X-Content-Type-Options,Referrer-Policy,frame-ancestorsinnginx.conf(gzip done). First check withcurl -I https://andreas-dahm.eu/if the reverse proxy already sets them.
Tests
seo.service.ts: spec for title/meta update on route change and language change.- Cloth ICM drop specs near timeout: drop specs in
cloth-icm-solver.spec.tstake 2.5-3 s each vs Vitest's 5 s default; give them an explicit timeout before a slow CI runner fails them. - Pure logic without specs:
pathfinding-animator.ts, cloth and pendulum GPU strategies (the math around them, not the shaders),fractal3d.
Features
- Cloth ICM next steps (page
algorithms/cloth-icm, CPU; detection + contours incollision/, one response file per paper inresponse/):- Fold flutter damping: drop cloth never settled (fold vertices flutter at 0.6-1.0 m/s). Done 2026-11-01: cause was the proximity push on folds lying on the ground (push out, next frame stretch constraints pull back, ~1 m/s chatter), not XPBD. Velocity smoothing (neighbour mean) + proximity velocity clamp, drop scene only, drop gap 0.035 -> 0.02: after landing (frames 600-900) max speed median 0.107, p90 0.207 (was 1.2 / 2.0 at 35x35), mean 0.012, same fall and drape, landing frame 20 as before, 11-12 ms/frame headless on 40x40 (was 10.3 on 35x35). Tangled scene bit-identical.
- Bridson 2002: CCD + velocity-level repulsion, so fast motion cannot jump through the gap; allows a finer drop grid. Large.
- Papers extending ICM: Ye et al. 2017 (untangling via discrete collision detection), Buffet et al. 2019 (implicit untangling, layered clothing). New
response/file + scene each. Medium per paper. - GPU port: detection on the GPU, contours stay on the CPU (serial walk). Very large.
- Cloth ICM drop scene (state): hits mostly solved, cloth settles. Drop scene 40x40 (spacing 0.145, 5.7 m cloth, user-set), gap 0.02, initial spin 1.5 rad/s around y, one mid-frame proximity re-detection (every 5), velocity smoothing + proximity velocity clamp. Frames 100-240: ICM on avg 1.0 hits per frame (59 % of frames at 0, max 10), ICM off avg 9.8 (max 43), bounded over 900 frames (max 92 after frame 150). Settled: max vertex speed median 0.107 / p90 0.207 m/s (frames 600-900, ICM on; target was 0.1; ICM off median 0.089), mean 0.012, rare snaps to 0.6-0.7. 11.4 ms/frame headless (60 fps budget 16.7). Spin sweep (values above ~0.75 rad/s are capped at the rim to 3 m/s in the first frame; ICM on / off hits, ratio): none 0.31 / 3.9 (12.7x); 0.1 2.6 / 4.3; 0.4 3.5 / 5.8; 0.7 1.3 / 5.1; 1.5 1.0 / 9.8 (chosen, most hits); 3 0.7 / 7.2 (rest speed worse). Finer grids or a gap >= 0.04 made ICM off blow up before the fix (not re-measured). Next: Bridson 2002 CCD + velocity repulsion.
- Shareable demo state: keep demo settings in query params (fractal zoom/center, sorting algorithm, seeds). Opening the link restores the view.
- New algorithm demos (pattern: route +
RouterConstants+AlgorithmsServiceentry + i18n + information panel):- Boids / flocking (GPU path like cloth)
- Physarum (slime mold transport networks, trail map on GPU compute, CPU fallback)
- Boids 3D (later, 2D done)
- Voronoi / Delaunay (Bowyer-Watson, CPU + Canvas 2D)
- A* vs Dijkstra side by side (reuse pathfinding)
- Fourier epicycles
- Reaction-diffusion (Gray-Scott) shader (reuse the fractal shader setup)
- Lenia (continuous Game of Life, shader ping-pong like Gray-Scott)
- Fluid (Stable Fluids) (velocity, pressure and dye shader ping-pong like Lenia)
- Cloth self-collision (ICM) (Volino and Magnenat-Thalmann 2006, CPU: BVH with normal-cone culling, contour tracing, intersection contour minimization)
- Ant colony (ACO on TSP, CPU + Canvas 2D)