PulseCore

Chapter 8 · Section 3

The Pulsecore and the Space Layer

The BPT law

BPT Part 3.6, in "The Pulsecore as a Bubble of Data", splits a universe's beginning into three: the Nullcore on the parent's side, the Bifold, "the one fold where one universe becomes two", and the Pulsecore, "the child's data held within the Bifold". The data within is radiation, Pulsecore Data Radiance P_∂ = u/3 with u = n·kB·T, every datum moving at 𝒞→; the Bifold Record Law, Φ∂ = n·𝒞→/4, makes the skin the record of what strikes it. The skin turns with the universe's spin by Bifold Drag, v_∂ = 𝒞→·a_f/(1 + √(1 − a_f²)), its equator moving as a Kerr horizon's does, "so the data within swirls with the spin and crowds toward the equator."

Every bit carries its null. The Null Nova Condition holds N∅ = N, so the null's density in the room the data has not taken is ρ∅ = N/(χ∂ − N), "rising from nothing toward one"; when N + N∅ = χ∂, at N₁ = χ∂/2, "the Pulsecore gives its null up as space." That is the first nova, Toroidal Genesis: "the null of the Pulsecore's bits expelled as space ... the toroidal substrate, empty of data." After it the Space Growth Law, S(n) = N(n) with χ∂/2 ≤ S(n) ≤ χ∂, grows space by one place for every new bit, "its area doubling" by the Data Nova. The Pulsecore, "the singularity that was the whole of it before the Data Nova", then stays the size of the hole (Part 3.10, Dilation). Part 3.6 also predicts the Data Loop: the data "circulates up through its throat, the Null Vacuum left by the Data Nova, and back round the outside". BPT Part 3.10 closes the story: "The space remains ... The game draws that space as one thin veil from the moment the Null Nova makes it, round the universe as it grows, and after it has gone."

The established physics

A Kerr black hole of spin a = J/(M·c) turns its horizon at Ω_H = a·c/(2·r₊) with r₊ = (G·M/c²)·(1 + √(1 − a²)) (Kerr 1963; Misner, Thorne & Wheeler 1973), so in units of c/(2GM/c²) the horizon's angular velocity is v = a/(1 + √(1 − a²)). This is skinSpeed(a_f) pinpoint.js:44. The smear of a fast-turning wheel against the wagon-wheel effect is ordinary motion blur. The torus's area 4π²·(H + r)·r is textbook geometry.

The game's math

The sphere and its data. Before the Null Nova the field canvas is drawn on a sphere of radius CORE = 0.444 (scene3d.js:85), its poles on the spin axis. The data within (pinpoint.js's gas) is drawn as points scaled to CORE·0.985 (setGasPoints() scene3d.js:405) with their last flip's paths as line segments (setGasPaths() scene3d.js:415). setCoreDensity(k, novas) scene3d.js:442 sizes and brightens them by the core's fill, k = N/χ_∂:

room = 0.5 before the Null Nova, 1 after        (each bit's null takes the other half)
d    = clamp(k / room, 0, 1.6) / 1.6
point size = 0.014 + 0.032·d;  opacity = 0.45 + 0.55·d;  path opacity = 0.25 + 0.45·d

setNullDensity(ρ) scene3d.js:1193 draws the null within as a dark haze, opacity 0.85·ρ for ρ = N/(χ_∂ − N), gone at the Null Nova.

The spin drawn. The true skin turn, π·v radians a flip, is 1.4 to 2.8 radians between drawn frames and would strobe backward, so the drawing runs on its own clock (render() scene3d.js:2063–2079):

v           = a / (1 + √(1 − a²)),   a = min(0.999, |a_f|)
drawnSpin  += 1.5 · v · spinUp · drawnMs / 1000          (radians)
ringSpin   += 4π · v · spinUp · drawnMs / 1000           (the ring of arrows, two turns a second at the fastest spin)
spinUp     → target with rate drawnMs / 1500             (SPIN_IDLE = 0.12 of the rate before Start, 1 after)

and the data within is turned by drawnSpin − skinTurn so it keeps with the skin. blurSkin() scene3d.js:254 smears the skin's texture along its turn: K = |Δturn|·W/(2π) pixels swept since the last frame; when K ≥ 2 each row is run twice through an exponential trail with k = e^(−2/min(K, W)). The momentum arrow is CORE + 0.15 + 1.4·|a_f| long (setSpin() scene3d.js:236); the cue arrow 0.35 + 1.0·|a_f|.

The core at its true size. Once a torus stands round it, the core eases to the hole's size: coreK → min(1, HOLE/CORE) at rate drawnMs/1500 (scene3d.js:2086). At level 6 on a desktop that is 0.0135/0.444 = 0.030 of its lone size. While coreK < 0.6 a glow sprite marks it, max(0.22, 9·CORE·coreK) across, breathing by 12 % with a period of 2π·260 ms (scene3d.js:2098).

Space. setSpace(k) scene3d.js:1181 takes space as a share of the χ_∂ places the data will need (1/2 at the Null Nova, 1 at the Data Nova, from app.js:517). The hole stays the Pulsecore's size, so the tube grows: buildSpace(k) scene3d.js:1187 solves (H + r)·r = k·(H + T)·T for the tube radius,

r = (−H + √(H² + 4·k·(H + T)·T)) / 2

so the space torus's area is exactly k of the full torus's. It grows toward its target by gap·min(1, dtMs/600) a frame (scene3d.js:1929), starting from k = 0.05. It is drawn as a veil (scene3d.js:121–128): only its far wall, near black (alpha 0.75 at most, from 3.6·SPACE_OP), with a hairline brighter rim where it is seen edge-on (smoothstep 0.86–0.99 of the grazing angle), so the sky behind space goes dark and the universe in front keeps its light. After the Physical Nova the same veil stays at full size at 0.8·SPACE_OP as the shell the physical grows into, shown while the physical is under 0.97 of it (scene3d.js:1206, 2012).

The void and its residue. At the Data Nova the hole fills with 900 points read off the field's last picture (makeResidue() scene3d.js:1303), each drifting out at 0.004 a step until it reaches the hole's edge and leaves (stepResidue() scene3d.js:1329). At each harmonic sweepHalf() scene3d.js:1322 sends every other remaining point out fast (0.06 a step) and halves the void's haze: opacity 0.55/2^(layer − 1), so the hole clears by octaves. A vortex ring at half the hole's radius turns at twice the torus's angle.

The fountain. makeFountain() scene3d.js:1268 draws 600 points circulating through the hole: in from the bottom rim (the first fifth of the loop), up the throat (the next three fifths), out over the top rim (the last fifth), at a pace clamp(4·flow.rate/rows, 0.004, 0.08) of a loop a step, twisted by the spin, each recolored from the skin's middle row when it completes a loop.

In the game

Before Start the player sees the Pulsecore alone: a sphere carrying the painted field, a gold spin arrow and a cyan axis arrow standing on it, and a ring of three arrowheads turning round it at the spin's horizon rate. The readout's epoch line reads "Pulsecore · paint the information" (app.js:1972), "Bits:" counts the painted pixels as … in the Pulsecore, and the "Spin:" line shows a_f · C. The core turns slowly, at 0.12 of its rate, until Start. The arrows are the cue of Part 8.10; "Show spin and axis" (index.php:193) hides them, and the "Spin a₁", "Spin a₂", "Genesis axis on screen" and "Axis tilt" controls set the same spin from the panel.

After Start the epoch line reads "Pulsecore · filling toward its Null Nova". The points of the data within grow larger and brighter as the core fills, the last flip's paths drawn as faint lines, the swirl of Bifold Drag visible as the data turns with the skin; a dark haze, the null, thickens with them. The "Tempos:" line reads data within … of the skin's … bits and "Capacity:" the share filled (app.js:2124–2126). At the Null Nova the haze is gone, and the banner reads "Null Nova · space is born", over "Harmonic 1 · Toroidal Genesis", with "the null of … bits leaves the Pulsecore as … places of empty space: the torus stands round it, empty" (app.js:5240–5246, a violet hue, 265). A dark violet-rimmed veil stands up round the sphere and the backdrop stars behind it go dark: that is space, empty. The epoch line now reads "Pulsecore · filling toward its Data Nova", and the veil grows step by step, one place for every new bit (app.js:517), until it is whole at the Data Nova.

At the Data Nova the sphere eases down to the size of the hole, marked by a small breathing glow, and the hole fills with residue drifting out to its rim; a vortex ring turns in it, and a fountain of points runs up through the throat and over the rims, the Data Loop drawn. At each later harmonic half the remaining residue sweeps out and the hole's haze halves, so the throat clears by octaves into the Null Vacuum. After the Physical Nova the veil stays as the shell the physical grows into, and when the full decay is over it is all that is left on screen.

The scale model

The Pulsecore is drawn at 0.444 alone and at the hole's true share of the field once the torus stands round it; the theory's Pulsecore is Planck size, so neither is to scale. The gas points are pinpoint.js's sample of the data within (Chapter 2 sets their count); the space torus is exact in area against the full torus. The residue (900) and the fountain (600) are pictures of a flow, not samples of it: each point stands for no fixed share.

Fixed numbers

Number Where What it is Kind
0.999 scene3d.js:2065 spin clamp before √(1 − a²) METHOD (avoids the extremal horizon's singular limit)
a/(1 + √(1 − a²)) scene3d.js:2065 the horizon's angular velocity PHYSICS (Kerr 1963)
1.5, 4π (radians a second per v) scene3d.js:2071, 2077 drawn turn of the core and of the arrow ring DISPLAY
0.12 (SPIN_IDLE), 1500 ms scene3d.js:32, 2070 the core's turn before Start; ease to full rate DISPLAY
2 px, e^(−2/K), two passes blurSkin() scene3d.js:257, 266 motion blur threshold and trail METHOD (motion blur against the wagon-wheel effect)
0.5 (room before the Null Nova) scene3d.js:443 each bit carries its null BPT (Part 3.6)
1.6; 0.014, 0.032; 0.45, 0.55; 0.25, 0.45 scene3d.js:443–446 gas point size and brightness by fill DISPLAY
0.985, 0.97, 0.995 scene3d.js:113, 119, 144 gas, haze and void just inside their spheres DISPLAY
0.85 (haze opacity), 0.002 scene3d.js:1196 the null haze DISPLAY
0.15, 1.4, 0.35, 1.0, arrow heads scene3d.js:243, 1583 arrow lengths by spin DISPLAY
3 arrowheads; 0.06; 0.008; 0.7 scene3d.js:100–106 the spin ring DISPLAY
min(1, HOLE/CORE), 1500 ms scene3d.js:2086 the core eases to the hole's size BPT (the Pulsecore is the hole, Part 3.10 Dilation)
0.6, 0.22, 9, 0.12, 260 ms, gradient stops scene3d.js:2091–2098 the core's glow DISPLAY
0.05 (space seed) scene3d.js:1183 space's first visible share at the Null Nova METHOD (a torus of zero tube cannot be drawn)
(−H + √(H² + 4k(H + T)T))/2 buildSpace() scene3d.js:1189 tube for an area share k PHYSICS (torus area 4π²(H + r)r)
600 ms, 100 ms scene3d.js:1929 space's growth easing DISPLAY
0.2 (SPACE_OP), 0.09, veil shader numbers (0.86, 0.99, 3.6, 0.75, 0.9, 0.16, 0.22, 0.32, 5.0, light direction), 0x8a7ad8 scene3d.js:120–128 the veil's look DISPLAY
0.8·SPACE_OP, 0.97 scene3d.js:1206, 2012 the shell after the Physical Nova DISPLAY
2500 ms scene3d.js:1932 space's glow at birth (held at 0 since 2026-10-29) DISPLAY
900 makeResidue() scene3d.js:1305 residue points in the hole CAP
0.004, 0.06, 0.03, 0.9, 1e4 scene3d.js:1316, 1326, 1335 residue drift, sweep speed, start radius, parking place DISPLAY
0.55/2^(layer − 1); every other point sweepHalf() scene3d.js:1323–1326 half of what remains goes at each harmonic BPT (Part 3.6, Data Harmonics)
600 makeFountain() scene3d.js:1270 fountain points CAP
0.004, 0.08, ×4, ×6, 0.2/0.8, 0.9, 1.04, 0.08 + 0.55√ placeFountain() scene3d.js:1286–1300 fountain pace, twist, loop shares, height, spill, radii DISPLAY
40, (0.85, 0.7, 1) sampleThroat() scene3d.js:1283 dark-pixel fallback color DISPLAY
HOLE·0.5, 0.02, 0.15, 0.55, colors scene3d.js:144–148, 219 the vortex ring and the void DISPLAY