Three.js Sketches
The Site Lab currently keeps two small, self-contained renderers:
| Sketch | Representation | Interaction |
|---|---|---|
| ASCII Earth | shader-lit land mask passed through AsciiEffect | slow rotation and pointer drag |
| Rössler attractor | one numerically integrated path with line and sparse point layers | slow rotation and pointer drag |
Use the controls to switch sketches or inspect the essential setup code.
The Rössler System
Otto Rössler introduced a compact continuous system that exhibits chaotic behavior:
The sketch uses the common parameter choice , , and . It applies a fourth-order Runge–Kutta step with , discards the initial transient, and draws 14,000 subsequent samples. The changing blue, green, yellow, red, and violet colors encode progress along one trajectory; they are not extra state variables or a scientific color scale.
This is a numerical visualization of one parameterized trajectory—not a proof of chaos, a complete phase-space analysis, or a simulation of a physical object. Integration method, step size, initial state, and floating-point behavior all affect the rendered approximation.
Component Boundaries
- Each renderer owns its scene. The Earth and attractor allocate and dispose their own geometry, materials, controls, observers, animation frame, and WebGL context.
- Layout stays outside Three.js.
ResizeObserversupplies the actual component dimensions; CSS owns the circular homepage frame and the demo card. - Idle work is bounded.
IntersectionObserverpauses drawing off-screen, rendering is capped near 30 FPS, and reduced-motion preferences slow automatic rotation. - The homepage is a registry.
ThreeShowcaserandomly chooses one registered sketch after hydration. Both remain explicitly selectable here, so randomness never hides the implementation. - Rendering remains local. No hosted renderer or remote simulation service is involved.