# One-Shot Prompt

**Simulation**: Receipt-paper physics
**Theme**: Warm minimal checkout-counter studio
**Generated**: 2026-04-24

## Prompt

Create a single-file interactive 3D receipt-paper physics benchmark with curling paper, drag interactions, material response, lighting, and no external images. Build it as one self-contained `index.html` using Three.js from a CDN and inline JavaScript/CSS only. Model the receipt as a dense spring-mass sheet with roughly 24-30 columns and 64-76 rows on desktop, reduced on touch/mobile. Use Verlet integration with a fixed timestep, delta-time clamping, 5-6 substeps, iterative constraint relaxation, pinned top-edge particles, gravity, damping, wind, edge curling, and subtle paper memory forces. Add structural, shear, and bend constraints, plus simple non-adjacent self-repulsion and collision against a counter plane.

Render the paper as a deforming `BufferGeometry` with per-frame normals, double-sided PBR material, a procedurally generated canvas texture that looks like a real receipt, roughness/clearcoat tuned for thin thermal paper, ambient and directional lighting with shadows, a clean gradient background, and a shadow-catching counter. Interaction must include mouse and touch grabbing via Three.js raycasting projected into world space, cursor feedback, a visible grab ring, release momentum, reset, pause, wind toggle, and orbit/zoom camera controls without external controls. Add an unobtrusive HUD with instructions, stats, and controls. Include responsive canvas, retina support, reduced-motion handling, inline SVG favicon, SEO/social metadata, and no external images or models.

## Notes

- Uses position-based Verlet integration because it keeps a thin sheet stable under many distance constraints.
- Receipt curl is driven by initial geometry, edge bias forces, and a light procedural wind field rather than a static mesh deformation.
- The receipt print is a generated canvas texture, so the file remains self-contained and uses no images.
- Host as a static `/physics/index.html` route on CodePen, Vercel, Cloudflare Pages, or a local HTTP server.
