Files
bubblechambersimart/tools/find-semicircle.mjs

39 lines
2.1 KiB
JavaScript
Raw Permalink Normal View History

/* Scan random seeds for the "semicircle" look: a shock disk sitting LOW (so its
striated sunburst fans up like a rising half-disc), prominent + striated, with
abundant δ-ray curls. Pure paramsFromSeed scoring no rendering.
Usage: node tools/find-semicircle.mjs [count] [topN] */
import { paramsFromSeed, archetypeOf } from '../src/scene/params.js';
const WORDS = ['MUON', 'KAON', 'PION', 'LAMBDA', 'SIGMA', 'XI', 'OMEGA', 'TAU', 'GLUON', 'QUARK',
'HADRON', 'BARYON', 'LEPTON', 'NEUTRINO', 'BOSON', 'STRANGE', 'CHARM', 'HYPERON', 'ANTIPROTON',
'POSITRON', 'MESON', 'FERMION', 'NUCLEON', 'ISOSPIN', 'CASCADE', 'RESONANCE', 'PARITY', 'GLUEBALL',
'PENTAQUARK', 'PHOTON', 'AXION', 'TACHYON', 'NEUTRON', 'PROTON', 'DELTA', 'UPSILON', 'BORON'];
const N = +(process.argv[2] || 6000);
const TOP = +(process.argv[3] || 16);
const rows = [];
for (let i = 0; i < N; i++) {
const seed = WORDS[(Math.random() * WORDS.length) | 0] + '-' + ((Math.random() * 9000) | 0 + 1000);
const p = paramsFromSeed(seed);
if (!p.shock || p.shockIntensity <= 0) continue;
// want: disk low (shockY high), prominent, well-striated, decent size, lots of curls
if (p.shockY < 0.5) continue;
const score =
(p.shockY - 0.5) * 6 + // lower disk → stronger half-disc
p.shockIntensity * 1.4 +
p.shockStriations * 1.6 +
p.shockSize * 2 +
p.deltaRate * 1.2 + // abundant curls
p.burst * 0.6;
rows.push({ seed, score, arch: archetypeOf(seed), y: p.shockY, I: p.shockIntensity, str: p.shockStriations, sz: p.shockSize, d: p.deltaRate, inv: p.invert });
}
rows.sort((a, b) => b.score - a.score);
// de-dup seeds, keep variety of archetypes
const seen = new Set(); const out = [];
for (const r of rows) { if (seen.has(r.seed)) continue; seen.add(r.seed); out.push(r); if (out.length >= TOP) break; }
console.log('seed'.padEnd(18), 'score arch shockY int striae size delta inv');
for (const r of out) {
console.log(r.seed.padEnd(18), r.score.toFixed(2), r.arch.padEnd(9),
r.y.toFixed(2), ' ', r.I.toFixed(2), ' ', r.str.toFixed(2), ' ', r.sz.toFixed(2), ' ', r.d.toFixed(2), ' ', r.inv);
}