# Fibonacci Spiral Data — `fibonacci-spiral-data@1.0.0`

A sunflower of glossy columns on the golden spiral that rise from the centre in a wave of data and sink back again. Loops perfectly.

Hundreds of round columns placed on the golden-angle spiral, each one 137.5° round from the last at a radius growing with the square root of its number, the way seeds pack in a flower head. Growth runs out from the middle: the columns rise one after another, ride a wave of data heights that travels out across the field and then sink back in the same order, so the loop begins and ends on an empty plate. Choose the number of columns, the colours (spectrum, ember, glacier or mono), how tall the data grows, how many waves cross the field per loop, the backdrop colour and whether the camera sways.

- Kind: object; status: published; digest sha256:821a8e2a98a83b66f16912ebb670299a521df22859574cc40be9f3b994a4b305
- Role: Object (3D, three.js): a data-visual centrepiece with natural, mathematical structure.
- Implementation: three; entry `src/fibonacci-spiral-data.js`
- Files: https://aipixelwizard.com/registry/fibonacci-spiral-data/1.0.0/<path> (`LICENSE`, `asset.json`, `demo.js`, `index.html`, `src/fibonacci-spiral-data.js`)
- Manifest JSON: https://aipixelwizard.com/api/v1/visuals/fibonacci-spiral-data/versions/1.0.0
- Runnable demo: https://aipixelwizard.com/registry/fibonacci-spiral-data/1.0.0/index.html (open over http; it imports sibling packages by relative path)
- Dependencies (exact): `three@0.185.1` (source) — Renderer, geometry and shader materials.; `chrome-material@1.1.0` (demo) — Studio environment light, backdrop and contact shadow.; `apw-runtime@1.0.0` (demo) — Demo harness.

## Exports
- `createFibonacciField({ count?, palette?, height?, waves? }) => { group, setProgress(progress), dispose() }` — The sunflower of instanced columns on a dark plate, about 12 across, resting on y = 0; needs an environment map.
- `PALETTES: { spectrum, ember, glacier, mono }` — Colour ramps from the centre outward.

## Parameters
- `count` (integer 150–1000, default 600) — Columns
- `palette` (select one of spectrum | ember | glacier | mono, default "spectrum") — Colours
- `height` (number 0.4–2, default 1) — Data height
- `waves` (integer 1–4, default 2) — Waves per loop
- `background` (color, default "#14161f") — Backdrop
- `orbit` (boolean, default true) — Camera sway

## Composition
- Inputs: Time within the loop; the columns, colours, height, waves, backdrop and camera sway.
- Outputs: A full frame rendered in 3D with a studio environment.
- Coordinates: The field is centred on the origin on y = 0, about 12 across (radius 6 scaled with the square root of the count); the camera looks down at about 49°.
- Lighting: A warm key light with a shadow map, a shadow-catching floor and the studio environment.
- Timing: setProgress(progress) sets every column's height; frames render in any order.
- Works with: chrome-material, orbit-camera, kinetic-title, number-reveal
- Columns are one instanced mesh with instance colours by position along the spiral.

## Output and loop
- 1080×1080, 30 fps, 16 s, procedural
- Seamless loop: yes — Each column rises and sinks in a window set by its number, so every column is at zero height at the first and last frames; the data wave has a whole number of cycles per loop and the camera sway is a sine of the loop, so the last frame meets the first.
- Verified 2026-10-06 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (WebGL 2 via SwiftShader (software)); deterministic: yes; loop check: Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255.

## Use it
New project: Create a WebGLRenderer with a studio environment and a shadow-casting light, add createFibonacciField().group and call field.setProgress(progress) each frame.

Existing project: Copy src/fibonacci-spiral-data.js; add the group to your scene with an environment map.

Reuse ideas:
- Data title: Spectrum, 600.
- Warm dashboard: Ember, tall.
- Cool ambient: Glacier, dense.

## Limitations
- The data values are generated by a formula, not supplied; to chart real data replace the height function.
- Columns of neighbouring spiral arms may touch at the largest counts.

## License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.

Provenance: Adapted from the owner's threejs-sketches/geometry-math/fibonacci-spiral-data (MIT) and rebuilt for AI Pixel Wizard in October 2026 as an original studio object: golden-angle columns with an outward rise-and-sink window and a travelling data wave on an exact loop.

