Added QFT
This commit is contained in:
466
tools/qft-variations-wild.mjs
Normal file
466
tools/qft-variations-wild.mjs
Normal file
@@ -0,0 +1,466 @@
|
||||
/* ============================================================
|
||||
qft-variations-wild.mjs — sketch 09 · running wild.
|
||||
|
||||
New mechanics this sketch:
|
||||
- VORTEX perturbations (swirling rotation around a centre)
|
||||
- STANDING WAVES (global plane-wave modulation; Chladni)
|
||||
- CURVED Feynman links (bezier-curved propagators)
|
||||
|
||||
Plus everything earlier: wavepackets, ripples, dense cubic,
|
||||
per-field weights, mid-tone substrates.
|
||||
============================================================ */
|
||||
import { writeFileSync, mkdirSync } from 'node:fs';
|
||||
import { generateQFTScene } from '../src/qft/scene.js';
|
||||
import { paramsFromSeed } from '../src/qft/params.js';
|
||||
import { renderQFTSVG } from '../src/qft/renderer.js';
|
||||
|
||||
const BASE_SEED = 'FEYNMAN-7167';
|
||||
const OUT_DIR = 'output/qft/sketch09';
|
||||
const SIZE = 1800;
|
||||
mkdirSync(OUT_DIR, { recursive: true });
|
||||
|
||||
const F = (hueStart, hueEnd, saturation, lightness, opacity, stroke) => {
|
||||
const f = { hueStart, hueEnd, saturation, lightness, opacity };
|
||||
if (stroke != null) f.stroke = stroke;
|
||||
return f;
|
||||
};
|
||||
const paper = (flat, glowInDelta = [16, 14, 12], glowOutDelta = [-22, -20, -18]) => ({
|
||||
flat,
|
||||
glowIn: [flat[0] + glowInDelta[0], flat[1] + glowInDelta[1], flat[2] + glowInDelta[2]],
|
||||
glowOut: [flat[0] + glowOutDelta[0], flat[1] + glowOutDelta[1], flat[2] + glowOutDelta[2]],
|
||||
});
|
||||
|
||||
const W = (x, y, amplitude, sigma) => ({ x, y, amplitude, sigma });
|
||||
const VX = (x, y, strength, sigma) => ({ x, y, strength, sigma }); // vortex
|
||||
const SW = (kx, ky, amplitude, phase = 0) => ({ kx, ky, amplitude, phase });
|
||||
const R = (x, y, count = 6, r0 = 0.06, dR = 0.09, propagator = 'photon') =>
|
||||
({ x, y, count, r0, dR, propagator });
|
||||
|
||||
const BASE = {
|
||||
cubicN: 2,
|
||||
photonCyclesPerUnit: 14,
|
||||
segmentsPerEdge: 8,
|
||||
linkCount: 10,
|
||||
linkCurvature: 0.0, // overridden per-variation
|
||||
e8Style: 'nautilus',
|
||||
nautilusTurns: 2.4, nautilusPerTurn: 14, nautilusGrowth: 0.22,
|
||||
};
|
||||
|
||||
const variations = [
|
||||
// ─── VORTEX block ───────────────────────────────────────────────────────────
|
||||
{
|
||||
name: '01_single-vortex-cubic',
|
||||
label: 'Single vortex · cubic mesh swirls around a centred angular-momentum core',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 175, 195]),
|
||||
vignOverride: [55, 55, 70], featureOverride: [40, 40, 60],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.42, schlegelRot3D: 0.45,
|
||||
vortices: [VX(0, 0, 1.20, 0.22)],
|
||||
e8Origins: [], linkCount: 6, linkCurvature: 0.25,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.68, 0.50, 0.40, 0.55, 1.0),
|
||||
schlegel: F(0.58, 0.72, 0.55, 0.36, 0.70, 1.6),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.05, 0.13, 0.90, 0.55, 0.92, 2.2),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '02_dipole-counter-vortices',
|
||||
label: 'Counter-rotating vortices · dipole · Kármán-street feel',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 175, 165]),
|
||||
vignOverride: [55, 55, 45], featureOverride: [45, 45, 35],
|
||||
cubicScale: 1.55, schlegelScale: 1.35,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
vortices: [VX(-0.30, 0, 1.20, 0.18), VX(0.30, 0, -1.20, 0.18)],
|
||||
e8Origins: [], linkCount: 8, linkCurvature: 0.40,
|
||||
fields: {
|
||||
cubic: F(0.05, 0.18, 0.55, 0.40, 0.55, 1.0),
|
||||
schlegel: F(0.08, 0.18, 0.55, 0.36, 0.72, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.55, 0.08, 0.92, 0.55, 0.95, 2.4),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '03_vortex-with-spinning-ripples',
|
||||
label: 'Vortex + ripples at same centre · spinning waves',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([180, 175, 165]),
|
||||
vignOverride: [60, 55, 45], featureOverride: [50, 45, 35],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
vortices: [VX(0, 0, 0.85, 0.30)],
|
||||
ripples: [R(0, 0, 5, 0.10, 0.10)],
|
||||
e8Origins: [], linkCount: 8, linkCurvature: 0.35,
|
||||
fields: {
|
||||
cubic: F(0.08, 0.18, 0.55, 0.40, 0.50, 1.0),
|
||||
schlegel: F(0.06, 0.16, 0.55, 0.36, 0.70, 1.6),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0.05, 0.18, 0.95, 0.55, 0.92, 2.4),
|
||||
links: F(0.95, 0.08, 0.95, 0.55, 0.95, 2.4),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '04_vortex-particle-spin',
|
||||
label: 'Vortex + wavepacket at same centre · particle with spin',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([170, 170, 190]),
|
||||
vignOverride: [50, 50, 70], featureOverride: [40, 40, 60],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
vortices: [VX(0, 0, 0.95, 0.20)],
|
||||
wavepackets: [W(0, 0, 0.060, 0.16)],
|
||||
e8Origins: [], linkCount: 7, linkCurvature: 0.35,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.72, 0.55, 0.40, 0.55, 1.0),
|
||||
schlegel: F(0.58, 0.78, 0.60, 0.34, 0.78, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.05, 0.16, 0.95, 0.55, 0.95, 2.4),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// ─── STANDING WAVE block ────────────────────────────────────────────────────
|
||||
{
|
||||
name: '05_horizontal-standing-wave',
|
||||
label: 'Horizontal standing wave · cubic ripples like a drum membrane',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([180, 175, 195]),
|
||||
vignOverride: [55, 50, 70], featureOverride: [40, 40, 55],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.45,
|
||||
standingWaves: [SW(7.0, 0.0, 0.045)],
|
||||
e8Origins: [], linkCount: 7, linkCurvature: 0.20,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.62, 0.50, 0.42, 0.55, 1.0),
|
||||
schlegel: F(0.58, 0.68, 0.55, 0.38, 0.72, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.06, 0.16, 0.95, 0.55, 0.95, 2.2),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '06_chladni-interference',
|
||||
label: 'Two crossed standing waves · Chladni-plate interference',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 175, 165]),
|
||||
vignOverride: [55, 50, 45], featureOverride: [45, 45, 35],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
standingWaves: [SW(8.0, 1.0, 0.038), SW(1.0, 8.0, 0.038)],
|
||||
e8Origins: [], linkCount: 8, linkCurvature: 0.30,
|
||||
fields: {
|
||||
cubic: F(0.04, 0.16, 0.60, 0.38, 0.60, 1.0),
|
||||
schlegel: F(0.06, 0.18, 0.60, 0.34, 0.75, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.95, 0.06, 0.95, 0.55, 0.95, 2.4),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '07_standing-wave-plus-wavepacket',
|
||||
label: 'Standing wave background · wavepacket on top · oscillating quantum state',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([170, 180, 165]), // sage
|
||||
vignOverride: [50, 65, 45], featureOverride: [40, 55, 35],
|
||||
cubicScale: 1.55, schlegelScale: 1.40,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
standingWaves: [SW(6.0, 2.0, 0.035)],
|
||||
wavepackets: [W(0.10, -0.10, 0.060, 0.18)],
|
||||
e8Origins: [], linkCount: 9, linkCurvature: 0.30,
|
||||
fields: {
|
||||
cubic: F(0.40, 0.50, 0.55, 0.38, 0.55, 1.0),
|
||||
schlegel: F(0.42, 0.52, 0.60, 0.34, 0.75, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.08, 0.16, 0.95, 0.55, 0.95, 2.4),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// ─── CURVED LINKS block ─────────────────────────────────────────────────────
|
||||
{
|
||||
name: '08_heavily-curved-links',
|
||||
label: 'Heavily curved Feynman links · organic tangle',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([180, 170, 175]),
|
||||
vignOverride: [55, 45, 50], featureOverride: [40, 35, 40],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.42, schlegelRot3D: 0.50,
|
||||
e8Origins: [{ x: -0.35, y: 0.30, scale: 0.32 },
|
||||
{ x: 0.35, y: -0.30, scale: 0.32 }],
|
||||
linkCount: 14, linkCurvature: 0.55,
|
||||
fields: {
|
||||
cubic: F(0.85, 0.96, 0.50, 0.40, 0.50, 1.0),
|
||||
schlegel: F(0.88, 0.00, 0.55, 0.36, 0.70, 1.6),
|
||||
e8: F(0.06, 0.16, 0.85, 0.55, 0.92, 2.0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.04, 0.14, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '09_curved-links-and-nautilus-chain',
|
||||
label: 'Curved-link cradle around a nautilus chain · synaptic',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([170, 175, 185]),
|
||||
vignOverride: [50, 55, 70], featureOverride: [40, 45, 60],
|
||||
cubicScale: 1.55, schlegelScale: 1.40,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.45,
|
||||
e8Origins: [
|
||||
{ x: -0.40, y: -0.30, scale: 0.32 },
|
||||
{ x: 0.00, y: 0.00, scale: 0.32 },
|
||||
{ x: 0.40, y: 0.30, scale: 0.32 },
|
||||
],
|
||||
linkCount: 14, linkCurvature: 0.50,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.68, 0.45, 0.40, 0.50, 1.0),
|
||||
schlegel: F(0.58, 0.70, 0.55, 0.36, 0.72, 1.6),
|
||||
e8: F(0.05, 0.18, 0.85, 0.55, 0.92, 2.2),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.06, 0.16, 0.95, 0.55, 0.95, 2.4),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// ─── MULTI-MECHANIC plates (combining wildly) ───────────────────────────────
|
||||
{
|
||||
name: '10_full-turbulence',
|
||||
label: 'Full turbulence · vortex + standing wave + ripples + curved links',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 170, 175]),
|
||||
vignOverride: [55, 50, 60], featureOverride: [45, 40, 50],
|
||||
cubicScale: 1.60, schlegelScale: 1.45,
|
||||
schlegelInnerR: 0.42, schlegelRot3D: 0.55,
|
||||
vortices: [VX(-0.20, 0.20, 0.70, 0.30)],
|
||||
standingWaves: [SW(5.0, 3.0, 0.025)],
|
||||
ripples: [R(0.30, -0.20, 4, 0.08, 0.10)],
|
||||
e8Origins: [], linkCount: 12, linkCurvature: 0.45,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.85, 0.50, 0.40, 0.55, 0.9),
|
||||
schlegel: F(0.60, 0.88, 0.55, 0.36, 0.72, 1.6),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0.50, 0.80, 0.95, 0.55, 0.90, 2.2),
|
||||
links: F(0.95, 0.06, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '11_molecular-vibration',
|
||||
label: 'Molecular vibration · two wavepackets + standing wave + curved bonds',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([185, 175, 175]),
|
||||
vignOverride: [60, 50, 55], featureOverride: [45, 40, 45],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
wavepackets: [W(-0.30, 0, 0.075, 0.16), W(0.30, 0, 0.075, 0.16)],
|
||||
standingWaves: [SW(6.0, 0.0, 0.028)],
|
||||
e8Origins: [], linkCount: 14, linkCurvature: 0.55,
|
||||
fields: {
|
||||
cubic: F(0.85, 0.00, 0.50, 0.42, 0.55, 1.0),
|
||||
schlegel: F(0.88, 0.05, 0.55, 0.38, 0.72, 1.6),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.05, 0.16, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '12_orbital-with-spin',
|
||||
label: 'Orbital with spin · vortex + ripples + nautilus, curved links',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 165, 145]),
|
||||
vignOverride: [65, 50, 30], featureOverride: [55, 45, 30],
|
||||
cubicScale: 1.55, schlegelScale: 1.35,
|
||||
schlegelInnerR: 0.38, schlegelRot3D: 0.50,
|
||||
vortices: [VX(0, 0, 0.80, 0.30)],
|
||||
ripples: [R(0, 0, 5, 0.12, 0.12)],
|
||||
e8Origins: [{ x: 0, y: 0, scale: 0.60 }],
|
||||
linkCount: 11, linkCurvature: 0.40,
|
||||
fields: {
|
||||
cubic: F(0.06, 0.14, 0.55, 0.38, 0.55, 1.0),
|
||||
schlegel: F(0.04, 0.13, 0.60, 0.34, 0.75, 1.8),
|
||||
e8: F(0.10, 0.18, 0.85, 0.55, 0.92, 2.0),
|
||||
ripple: F(0.10, 0.04, 0.95, 0.55, 0.92, 2.4),
|
||||
links: F(0.50, 0.10, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '13_field-gradient-shear',
|
||||
label: 'Field gradient · a single SLOW standing wave deforming the whole canvas',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([170, 175, 195]),
|
||||
vignOverride: [50, 55, 70], featureOverride: [40, 45, 60],
|
||||
cubicScale: 1.60, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.42, schlegelRot3D: 0.45,
|
||||
standingWaves: [SW(1.8, 0.0, 0.080)], // single low-frequency big amp = gradient-like shear
|
||||
e8Origins: [{ x: -0.40, y: 0, scale: 0.32 },
|
||||
{ x: 0.40, y: 0, scale: 0.32 }],
|
||||
linkCount: 10, linkCurvature: 0.40,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.68, 0.50, 0.42, 0.55, 1.0),
|
||||
schlegel: F(0.58, 0.72, 0.55, 0.36, 0.70, 1.8),
|
||||
e8: F(0.08, 0.16, 0.85, 0.55, 0.92, 2.0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.05, 0.16, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '14_multi-vortex-chaos',
|
||||
label: 'Multi-vortex chaos · 4 spinning centres + dense curved-link tangle',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 175, 165]),
|
||||
vignOverride: [55, 55, 45], featureOverride: [45, 45, 35],
|
||||
cubicScale: 1.55, schlegelScale: 1.30,
|
||||
schlegelInnerR: 0.42, schlegelRot3D: 0.50,
|
||||
vortices: [
|
||||
VX(-0.30, -0.30, 0.85, 0.18),
|
||||
VX( 0.30, -0.30, -0.85, 0.18),
|
||||
VX(-0.30, 0.30, -0.85, 0.18),
|
||||
VX( 0.30, 0.30, 0.85, 0.18),
|
||||
],
|
||||
e8Origins: [], linkCount: 13, linkCurvature: 0.50,
|
||||
fields: {
|
||||
cubic: F(0.06, 0.16, 0.55, 0.40, 0.55, 1.0),
|
||||
schlegel: F(0.04, 0.14, 0.55, 0.36, 0.72, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.95, 0.06, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '15_perturbation-cascade',
|
||||
label: 'Perturbation cascade · 3 wavepackets at different scales + ripples + curved links',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([180, 175, 165]),
|
||||
vignOverride: [60, 55, 45], featureOverride: [50, 45, 35],
|
||||
cubicScale: 1.55, schlegelScale: 1.40,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
wavepackets: [
|
||||
W(-0.45, 0.30, 0.040, 0.10),
|
||||
W(-0.05, -0.05, 0.075, 0.18),
|
||||
W( 0.40, -0.30, 0.060, 0.14),
|
||||
],
|
||||
ripples: [R(-0.45, 0.30, 3, 0.05, 0.06),
|
||||
R(-0.05, -0.05, 5, 0.07, 0.09),
|
||||
R(0.40, -0.30, 4, 0.06, 0.08)],
|
||||
e8Origins: [], linkCount: 12, linkCurvature: 0.40,
|
||||
fields: {
|
||||
cubic: F(0.06, 0.16, 0.55, 0.40, 0.55, 1.0),
|
||||
schlegel: F(0.04, 0.14, 0.55, 0.36, 0.72, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0.10, 0.05, 0.95, 0.55, 0.92, 2.4),
|
||||
links: F(0.95, 0.08, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// ─── BOLD experiments ───────────────────────────────────────────────────────
|
||||
{
|
||||
name: '16_asymmetric-riot',
|
||||
label: 'Asymmetric riot · everything happening everywhere · one mind-storm plate',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([175, 170, 175]),
|
||||
vignOverride: [55, 50, 60], featureOverride: [45, 40, 50],
|
||||
cubicScale: 1.65, cubicOriginX: -0.05,
|
||||
schlegelScale: 1.55, schlegelOriginX: 0.10,
|
||||
schlegelInnerR: 0.42, schlegelRot3D: 0.60,
|
||||
vortices: [VX(-0.30, 0.20, 0.95, 0.20)],
|
||||
wavepackets: [W(0.25, -0.25, 0.075, 0.16)],
|
||||
ripples: [R(-0.30, 0.20, 4, 0.07, 0.08),
|
||||
R(0.25, -0.25, 5, 0.05, 0.08),
|
||||
R(0.0, 0.0, 3, 0.10, 0.10)],
|
||||
standingWaves: [SW(4.0, 1.5, 0.025)],
|
||||
e8Origins: [{ x: 0.45, y: 0.40, scale: 0.30 },
|
||||
{ x: -0.45, y: -0.40, scale: 0.30 }],
|
||||
linkCount: 14, linkCurvature: 0.55,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.85, 0.55, 0.40, 0.55, 0.9),
|
||||
schlegel: F(0.60, 0.88, 0.55, 0.36, 0.75, 1.8),
|
||||
e8: F(0.05, 0.16, 0.85, 0.55, 0.92, 2.2),
|
||||
ripple: F(0.50, 0.85, 0.95, 0.55, 0.92, 2.2),
|
||||
links: F(0.95, 0.10, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '17_spectral-vortex-storm',
|
||||
label: 'Spectral vortex storm · radial gradient · full spectrum in every element',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([170, 170, 175]),
|
||||
vignOverride: [55, 50, 55], featureOverride: [40, 40, 45],
|
||||
gradientMode: 'radial',
|
||||
cubicScale: 1.55, schlegelScale: 1.40,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.50,
|
||||
vortices: [VX(0, 0, 1.10, 0.30)],
|
||||
ripples: [R(0, 0, 5, 0.13, 0.10)],
|
||||
e8Origins: [], linkCount: 12, linkCurvature: 0.45,
|
||||
fields: {
|
||||
cubic: F(0.55, 0.05, 0.70, 0.42, 0.55, 1.0),
|
||||
schlegel: F(0.55, 0.05, 0.60, 0.36, 0.72, 1.8),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0.55, 0.05, 0.95, 0.55, 0.92, 2.4),
|
||||
links: F(0.55, 0.05, 0.95, 0.55, 0.95, 2.6),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '18_quiet-single-vortex',
|
||||
label: 'Quiet · single small vortex + few curved links · contemplative counter',
|
||||
overrides: {
|
||||
...BASE,
|
||||
paperOverride: paper([195, 188, 178]),
|
||||
vignOverride: [55, 50, 45], featureOverride: [50, 45, 40],
|
||||
cubicScale: 1.40, schlegelScale: 1.20,
|
||||
schlegelInnerR: 0.40, schlegelRot3D: 0.45,
|
||||
vortices: [VX(0, 0, 0.50, 0.25)],
|
||||
e8Origins: [], linkCount: 4, linkCurvature: 0.40,
|
||||
fields: {
|
||||
cubic: F(0.60, 0.68, 0.30, 0.42, 0.40, 0.9),
|
||||
schlegel: F(0.62, 0.70, 0.40, 0.40, 0.55, 1.4),
|
||||
e8: F(0, 0, 0, 0.5, 0),
|
||||
ripple: F(0, 0, 0, 0.5, 0),
|
||||
links: F(0.06, 0.14, 0.80, 0.50, 0.85, 1.8),
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const base = paramsFromSeed(BASE_SEED);
|
||||
for (const v of variations) {
|
||||
const params = { ...base, ...v.overrides };
|
||||
if (v.overrides.fields) params.fields = v.overrides.fields;
|
||||
const svg = renderQFTSVG(generateQFTScene(params), params, SIZE);
|
||||
const path = `${OUT_DIR}/${v.name}.svg`;
|
||||
writeFileSync(path, svg);
|
||||
console.log(`ok ${v.name}`);
|
||||
}
|
||||
console.log(`\nrendered ${variations.length} variations → ${OUT_DIR}/`);
|
||||
Reference in New Issue
Block a user