Spaces:
Running
Running
Download index.html from HaomingLuo/AgentFEM-Morph-Lab: direct link, hf CLI and curl.
- Browser
- Download file 5.69 kB
-
https://huggingface.co/spaces/HaomingLuo/AgentFEM-Morph-Lab/resolve/main/index.html
- Command line
-
hf download hf://spaces/HaomingLuo/AgentFEM-Morph-Lab/index.html
-
curl -L -o index.html https://huggingface.co/spaces/HaomingLuo/AgentFEM-Morph-Lab/resolve/main/index.html
5.69 kB
| <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="theme-color" content="#091316"><title>AgentFEM × Morph Lab</title><meta name="description" content="Design flexible rod shapes in your browser. Drag a target, sketch a curve, explore equilibrium branches."><link rel="stylesheet" href="style.css?v=motor1"></head> | |
| <body><header><a class="brand" href="https://lab.haoming-luo.com/" target="_blank" rel="noopener">AgentFEM <span>× Morph Lab</span></a><div class="head-actions"><button id="methods" data-i18n="methods">Method</button><button id="language">中文</button></div></header> | |
| <main><nav aria-label="Experiments"><button class="active" data-mode="reach"><span>01</span> <b data-i18n="reach">Reach a point</b></button><button data-mode="shape"><span>02</span> <b data-i18n="shape">Draw a shape</b></button><button data-mode="branch"><span>03</span> <b data-i18n="branch">Explore branches</b></button></nav> | |
| <section class="intro"><div><p class="eyebrow" data-i18n="eyebrow">PROGRAMMABLE FLEXIBLE STRUCTURES</p><h1 id="title">Where should it go?</h1></div><p id="subtitle">Drag the target. Find the actuation.</p></section> | |
| <div class="workbench"><section class="stage"><div class="stage-top"><span><i></i> <span data-i18n="live">Live mechanics</span></span><span id="interaction-hint"></span></div><canvas id="canvas" tabindex="0" role="application" aria-label="Interactive flexible rod. Click or drag to move the target; arrow keys adjust its position."></canvas><div class="stage-bottom"><div class="legend"><span class="dot teal"></span><span data-i18n="rod">Rod</span><span class="dot amber"></span><span id="legend-target" data-i18n="target">Target</span></div><span data-i18n="scale">Coordinates / reference length L</span></div></section> | |
| <aside><div class="section-caption" data-i18n="experiment">TRY A SHAPE</div><div id="presets" class="presets"></div><div id="branch-controls" hidden><label for="load"><span data-i18n="load">End load p</span><output id="load-value">−0.016428</output></label><input id="load" type="range" min="-0.017159" max="-0.016316" step="0.000001" value="-0.016428"><div class="branch-options"><button data-branch="up" data-i18n="up">Up</button><button data-branch="straight" data-i18n="straight">Straight</button><button class="active" data-branch="down" data-i18n="down">Down</button></div><p class="quiet" data-i18n="branch-help">The dashed shapes are other equilibria under the same loads.</p></div> | |
| <div class="result"><div class="section-caption" id="metric-label">TARGET ERROR</div><div class="metric"><strong id="error-value">—</strong><span id="error-unit">% L</span></div><div id="status" role="status" aria-live="polite"></div><div class="coordinates"><span id="tip-label" data-i18n="tip">Endpoint</span><output id="tip-value">—</output></div></div> | |
| <div id="motion-controls"><button id="play" class="primary" disabled><span aria-hidden="true">▷</span> <span data-i18n="play">Play loading</span></button><div class="progress-track"><div id="progress"></div></div><p class="quiet" id="motion-note" data-i18n="quasistatic">Quasi-static loading · not physical time</p></div> | |
| <details id="controls"><summary data-i18n="controls">Actuation · three zones</summary><div class="zone-row"><label for="k1">κ₁L</label><input id="k1" type="range" min="-2.4" max="2.4" step=".01"><output id="k1-value">0</output></div><div class="zone-row"><label for="k2">κ₂L</label><input id="k2" type="range" min="-2.4" max="2.4" step=".01"><output id="k2-value">0</output></div><div class="zone-row"><label for="k3">κ₃L</label><input id="k3" type="range" min="-2.4" max="2.4" step=".01"><output id="k3-value">0</output></div><p class="quiet" data-i18n="curvature-help">Intrinsic curvature in each third of the rod.</p></details> | |
| <div class="utilities"><button id="reset" data-i18n="reset">Reset</button><button id="export" data-i18n="export">Export design ↗</button></div></aside></div> | |
| <footer><p data-i18n="footer">Built with verified rod mechanics. Part of AgentFEM Morph Lab.</p><div><a href="https://huggingface.co/datasets/HaomingLuo/AgentFEM-Programmable-Soft-Rods" target="_blank" rel="noopener" data-i18n="dataset">Dataset ↗</a><a href="https://huggingface.co/HaomingLuo/AgentFEM-Morph-Rod-Surrogates" target="_blank" rel="noopener" data-i18n="models">Models & code ↗</a></div></footer></main> | |
| <dialog id="method-dialog"><button id="close-method" aria-label="Close">×</button><p class="eyebrow">MORPH LAB / v0.1</p><h2 data-i18n="method-title">How it works</h2><p data-i18n="method-body">The browser solves a 48-element, extensible planar rod. Point and curve matching optimize three bounded intrinsic-curvature controls, with a small fixed end load. Results are calculated, not selected from a catalog. This demo uses the mechanics solver; the neural baselines are downloadable separately.</p><p data-i18n="method-path">Playback samples a ramp from zero actuation. Each displayed state is solved and checked for local stability; intervals between samples are not certified. No contact or dynamic snap-through is modeled.</p><p data-i18n="method-paper">The branch example implements the microforce mechanism of Ye, Piccolroaz & Bigoni (JMPS): χ=10⁻⁴, h=0.01, δ=0.1. Branch selection initializes a separate equilibrium solve; it is not a simulated transition between branches.</p><a href="https://doi.org/10.1016/j.jmps.2026.106870" target="_blank" rel="noopener">Ye et al. · JMPS ↗</a><p class="quiet">χ = EI / (EA L²) · L = EA = 1 · Apache-2.0</p></dialog> | |
| <script type="module" src="app.mjs?v=motor1"></script></body></html> | |