From 3d533be90e00e6b34fc7b51bd0743c539e8cf6ca Mon Sep 17 00:00:00 2001 From: storagebits <48120561+storagebits@users.noreply.github.com> Date: Wed, 4 Nov 2026 21:48:25 -0500 Subject: [PATCH] Radial: the R-2800 Double Wasp, taken apart An 18-cylinder twin-row radial (a C-series CB16 after public sources, not affiliated with Pratt & Whitney): starter, missed then caught firings, the firing order round the star, one row in section with its master rod and eight articulated rods, the rows pulled apart, a cam ring lifting a valve, the climb to 2,700 rpm. One input, the crank angle integrated from a planned run; check.mjs recomputes the figures. en, fr, es. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BzxZC5aA7ZkPTd3m9Kq4wy --- README.md | 5 +- machines/radial/FILM.md | 31 + machines/radial/REFERENCES.md | 87 ++ machines/radial/check.mjs | 99 ++ machines/radial/og.png | Bin 0 -> 413262 bytes machines/radial/r2800-film/events.json | 1 + machines/radial/r2800-film/main.js | 4 + machines/radial/r2800-film/timeline.json | 1 + machines/radial/r2800-live/main.js | 5 + machines/radial/r2800-shared/console.js | 400 ++++++++ machines/radial/r2800-shared/engine.js | 222 +++++ machines/radial/r2800-shared/film.js | 298 ++++++ machines/radial/r2800-shared/fonts.js | 24 + machines/radial/r2800-shared/i18n.js | 220 +++++ machines/radial/r2800-shared/live.js | 510 ++++++++++ .../radial/r2800-shared/make-timeline.mjs | 47 + machines/radial/r2800-shared/model.js | 928 ++++++++++++++++++ machines/radial/r2800-shared/schedule.js | 168 ++++ machines/radial/r2800-shared/score.py | 129 +++ machines/radial/r2800-shared/stage.js | 218 ++++ package-lock.json | 20 + package.json | 4 +- scripts/build.mjs | 2 + scripts/machines.mjs | 35 +- 24 files changed, 3452 insertions(+), 6 deletions(-) create mode 100644 machines/radial/FILM.md create mode 100644 machines/radial/REFERENCES.md create mode 100644 machines/radial/check.mjs create mode 100644 machines/radial/og.png create mode 100644 machines/radial/r2800-film/events.json create mode 100644 machines/radial/r2800-film/main.js create mode 100644 machines/radial/r2800-film/timeline.json create mode 100644 machines/radial/r2800-live/main.js create mode 100644 machines/radial/r2800-shared/console.js create mode 100644 machines/radial/r2800-shared/engine.js create mode 100644 machines/radial/r2800-shared/film.js create mode 100644 machines/radial/r2800-shared/fonts.js create mode 100644 machines/radial/r2800-shared/i18n.js create mode 100644 machines/radial/r2800-shared/live.js create mode 100644 machines/radial/r2800-shared/make-timeline.mjs create mode 100644 machines/radial/r2800-shared/model.js create mode 100644 machines/radial/r2800-shared/schedule.js create mode 100644 machines/radial/r2800-shared/score.py create mode 100644 machines/radial/r2800-shared/stage.js diff --git a/README.md b/README.md index b69c711..1091b3e 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ the same model that moves the parts. Left alone, each page plays a guided tour; | | The machine | What drives it | Checked by | |---|---|---|---| +| [**Radial**](machines/radial) | The Pratt & Whitney R-2800 Double Wasp, an 18-cylinder twin-row radial: the starter, the first firings missed then caught, the firing order going round the star, one row in section with its master rod and eight articulated rods (whose pistons do not quite follow the master's law), the rows pulled apart, a cam ring lifting a valve, the climb to 2,700 rpm. A C-series CB16 after public sources; not affiliated with Pratt & Whitney. | The crank angle, integrated once from a planned run of the engine speed. Power, torque and manifold pressure follow from it. | `machines/radial/check.mjs` | | [**Quantum**](machines/quantum) | A photonic quantum computer: a quantum dot emits one photon per laser pulse, fibre delay lines bring them onto a 24-mode chip together, 276 Mach-Zehnder interferometers mix them, superconducting detectors click. A Hong-Ou-Mandel test on one coupler, the Perceval program behind the heaters. Modelled on the public figures of Quandela's Belenos; not affiliated with Quandela. | The physical time τ of the shot, in nanoseconds. The output distribution is computed from the permanents of the chip's unitary. | `machines/quantum/check.mjs` | | [**Spindl**](machines/spindl) | A 3.5-inch 7,200 rpm desktop hard drive (2 platters, 4 heads): spin-up, the heads loading off the ramp, a seek drawn live, the rotational wait, the 3 nm flying height, the emergency park. A model of a typical drive, not a specific product. | The drive time τ. A request queue (LBA → zone, cylinder, head, sector) is planned once. | `machines/spindl/check.mjs` | @@ -66,8 +67,8 @@ Content-Security-Policy that allows the pages' inline scripts by their hashes, c ## Credits Built with Claude Code (Claude Opus 5.5) and the teardown skill, whose kit, frame capture and sound engine come from -[whaleyxbt/claude-motion](https://github.com/whaleyxbt/claude-motion) (MIT). three.js (MIT). Inter, JetBrains Mono and -Instrument Serif (SIL Open Font License). +[whaleyxbt/claude-motion](https://github.com/whaleyxbt/claude-motion) (MIT). three.js (MIT). Inter, JetBrains Mono, +Instrument Serif, Barlow Condensed and Saira Stencil One (SIL Open Font License). ## License diff --git a/machines/radial/FILM.md b/machines/radial/FILM.md new file mode 100644 index 0000000..ed01b87 --- /dev/null +++ b/machines/radial/FILM.md @@ -0,0 +1,31 @@ +# The film + +The tour (40 s) is recorded frame by frame from `machines/radial/r2800-film`, the same code as the page, with the +capture tools of the teardown skill ([whaleyxbt/claude-motion](https://github.com/whaleyxbt/claude-motion)). They need +the skill installed (`SKILL_DIR`), headless Chrome with a real GPU, `ffmpeg` and Python 3. + +```sh +cd machines/radial +node r2800-shared/make-timeline.mjs # r2800-film/timeline.json (beats) and events.json (every spark, the run at 100 Hz) +node "$SKILL_DIR/sims/build.mjs" ./r2800-film +echo '{"lang":"en"}' > /tmp/en.json # or fr / es +node "$SKILL_DIR/sims/capture.mjs" r2800-film --timeline r2800-film/timeline.json --config /tmp/en.json --size 1600x900 --dpr 1.2 --stills beats --cols 3 --out teardown-out/beats.png +node "$SKILL_DIR/sims/capture.mjs" r2800-film --timeline r2800-film/timeline.json --config /tmp/en.json --size 1600x900 --dpr 1.2 --out teardown-out/silent.mp4 +python3 "$SKILL_DIR/run_sfx.py" r2800-shared/score.py # teardown-out/radial-score.wav, mastered to −14 LUFS +ffmpeg -y -i teardown-out/silent.mp4 -i teardown-out/radial-score.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 256k -shortest -movflags +faststart teardown-out/radial-en.mp4 +``` + +The share card is a frame of the film without the console, the star from the front at idle: + +```sh +echo '{"lang":"en","clean":true}' > /tmp/clean.json +node "$SKILL_DIR/sims/capture.mjs" r2800-film --config /tmp/clean.json --size 1600x900 --dpr 1.2 --still 11 --out teardown-out/og-src.png +ffmpeg -y -i teardown-out/og-src.png -vf "scale=1200:-1,crop=1200:630:0:(ih-630)/2" -map_metadata -1 og.png +``` + +On macOS, Playwright's headless shell may get no WebGL context; point the capture at Chrome: +`CHROMIUM="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"`. + +The sound is built on the same timeline: the starter's whine, a cough for each spark that lights while the engine +catches (the missed ones stay silent), a thud per firing while they come slower than ~12 a second on screen, then a +growl whose pulse is the firing rate on screen, and the propeller's wash. diff --git a/machines/radial/REFERENCES.md b/machines/radial/REFERENCES.md new file mode 100644 index 0000000..fd58fbb --- /dev/null +++ b/machines/radial/REFERENCES.md @@ -0,0 +1,87 @@ +# Radial: references + +Radial is a model of a Pratt & Whitney R-2800 Double Wasp, the 18-cylinder twin-row radial of the F6F Hellcat, the +F4U Corsair, the P-47 and, after the war, the Douglas DC-6. It is built from public sources, as a **C-series CB16** +(the DC-6B's engine, single-stage two-speed supercharger, 0.45 : 1 propeller gear), and it is not affiliated with +Pratt & Whitney. Where a figure is not public, the model uses a plausible value, listed below under **[E]**. + +The letters match the comments in [`r2800-shared/engine.js`](r2800-shared/engine.js), the one file every pose, +gauge and sound reads its numbers from. + +## Sources + +- **[F]** FAA, Type Certificate Data Sheet **6A3**, Douglas DC-6A / DC-6B, revision 28 + ([copy on enginehistory.org](https://www.enginehistory.org/Operations/WaterInjServErrors/6A3Rev28.pdf)). Engine + limits of the P&W Double Wasp CB-16: take-off (two minutes, dry) 2,050 hp at 2,700 rpm and 55.0 inHg; take-off wet + (water-alcohol) 2,400 hp at 2,800 rpm and 59.5 inHg; maximum continuous 1,800 hp at 2,600 rpm and 48.5 inHg; + impeller gear ratios 7.29 : 1 (low) and 8.58 : 1 (high); ".45:1 propeller reduction gearing". The film climbs to + the dry take-off point. +- **[N]** Smithsonian National Air and Space Museum, + [Pratt & Whitney Double Wasp R-2800 CB16](https://airandspace.si.edu/collection-objects/pratt-whitney-double-wasp-r-2800-cb16-2-row-radial-18-engine/nasm_A19580058000) + (A19580058000): weight 1,068 kg (2,350 lb), diameter 52.8 in, length 81.4 in, gear-driven single-stage two-speed + supercharger, 2,400 hp at 2,800 rpm. +- **[W]** K. McCutcheon, [Pratt & Whitney Double Wasp (R-2800)](https://enginehistory.org/Piston/P&W/R-2800/r-2800.shtml), + Aircraft Engine Historical Society: bore 5.75 in, stroke 6.000 in, 2,804.5 in³; two master rod assemblies, each a + one-piece master rod and eight "I"-section articulated rods on knuckle pins; a crankshaft of three steel forgings + joined at the crankpins; forged aluminium heads screwed and shrunk on forged steel barrels, finned aluminium muffs; + one inlet and one exhaust valve per cylinder; valve gear and ignition "substantially the same as the Twin Wasp". + The C series' compression ratio, 6.75 : 1, is from the + [R-2800 article](https://en.wikipedia.org/wiki/Pratt_%26_Whitney_R-2800_Double_Wasp) (Wikipedia, citing the + manufacturer's data). +- **[H]** FAA, *Aviation Maintenance Technician Handbook, Powerplant* (FAA-H-8083-32), the chapters on radial + engines: the firing order numbers of an 18-cylinder twin-row radial are **+11 and −7**, which gives + 1-12-5-16-9-2-13-6-17-10-3-14-7-18-11-4-15-8; cylinders numbered clockwise from the top of the rear row, seen from + the rear, odd in the rear row; a nine-cylinder row's cam ring has 4 lobes per track and turns against the crank + (a lobe every 90°, at ⅛ crank speed). Copies of those pages: + [firing order](https://www.aircraftsystemstech.com/p/firingorder-firing-order-of-engine-is.html), + [valve operating mechanism](https://aircraftsystemstech.com/p/valveoperating-mechanism-for.html). + +The geometry was built against photographs of real engines (Wikimedia Commons): +[a sectioned R-2800](https://commons.wikimedia.org/wiki/File:Cross_Section_of_a_Pratt_and_Whitney_R2800_Double_Wasp.JPG) +(the profile in section: nose case and reduction gear, both rows, master rods, crank, impeller), +[an R-2800 on its stand](https://commons.wikimedia.org/wiki/File:HARP_Pratt_%26_Whitney_R-2800_Double_Wasp.JPG) +(nose, magnetos, harness ring, pushrod tubes, baffles), +[the R-2800-21 at the National Museum of the USAF](https://commons.wikimedia.org/wiki/File:Pratt_%26_Whitney_R-2800-21_USAF.jpg) +(the star from the front, black intake pipes, aluminium rocker boxes) and +[an R-2800 in profile](https://commons.wikimedia.org/wiki/File:20-09-083-R_2800.jpg) (the long supercharger and +accessory section). They belong to their authors and are not in this repository. + +## Estimates **[E]** + +Not public, or not found in a primary source; chosen to be plausible: + +| Figure | Value | Why | +|---|---|---| +| Master rod, crankpin to piston pin | 292 mm (11.5 in) | about 3.8 crank throws; fits the 1,341 mm diameter with the heads and rocker boxes | +| Knuckle-pin circle | 60.3 mm (2.375 in) | just outside the 92 mm crankpin and its bearing | +| Articulated rod | 231.7 mm (master − knuckle circle) | the usual first choice; the knuckle pins sit at exactly 40° steps (see below) | +| Master rods in cylinders | 13 (rear row), 8 (front row) | not found in the sources above | +| Row spacing along the axis | 210 mm | the reference photos | +| Valve timing | inlet 20° BTDC – 60° ABDC, exhaust 50° BBDC – 20° ATDC | typical of the period; lift 15.9 mm | +| Spark | 25° before top centre | typical | +| Idle, starter cranking | 700 rpm, 140 rpm | typical | +| Propeller | three blades, 4.0 m | a Hamilton Standard of the DC-6B's size | +| Power at other speeds | the propeller absorbs P ∝ N³ through the run, 2,050 hp at 2,700 rpm | a fixed-pitch law; inertia neglected | +| Manifold pressure | bmep = k · MAP − friction (1.2 + 0.6 (N/2,700)² bar) − pumping | k set so that 2,050 hp needs 55.0 inHg exactly; the same law gives 1,702 hp at the METO point (1,800 hp [F], −5.4 %) | +| Reduction gear layout | sun 72 teeth on the crank, ring 88 fixed, carrier on the shaft | gives 0.45 exactly; P&W's tooth counts are not public | + +## The model, by hand + +- π/4 × 5.75² × 6 × 18 = **2,804.5 in³** (45.96 L). +- 2,050 hp = 1,528.7 kW at 2,700 rpm (282.7 rad/s): **5,407 N·m** at the crank, a brake mean effective pressure of + 14.8 bar. +- 18 firings in two turns: 9 × 2,700 / 60 = **405 firings a second**, one every 40° of crank. +- Mean piston speed 2 × 0.1524 m × 45 rev/s = **13.7 m/s**. Propeller 0.45 × 2,700 = 1,215 rpm; impeller + 7.29 × 2,700 = 19,683 rpm. +- The cam ring: each tappet needs one lift in 720° of crank; 4 lobes on a ring turning at ⅛ crank speed against it + bring one every 90° × 8 = 720°. The model reads every valve's lift off the turning ring and check.mjs verifies it + equals the valve timing for all 36 valves. +- **The articulated rods.** The master rod's piston follows the plain slider-crank law: stroke 152.40 mm, top centre + when its crankpin points at it. An articulated rod hangs on a knuckle pin that orbits on the master rod's big end, + an ellipse rather than a circle, so its piston does not: with the knuckle pins at exact 40° steps the model gives + strokes from 152.41 to **153.08 mm**, top centres up to **3.7°** early or late and up to 2.45 mm lower, so a + compression ratio down to 6.27 against the master's 6.75. Real engines trim the knuckle-pin positions to even this + out; how P&W did it for the R-2800 is not in the public sources, so the page shows the uncorrected geometry and + says so. + +`node machines/radial/check.mjs` recomputes each of these from the code. diff --git a/machines/radial/check.mjs b/machines/radial/check.mjs new file mode 100644 index 0000000..117694e --- /dev/null +++ b/machines/radial/check.mjs @@ -0,0 +1,99 @@ +// Recomputes, from the same functions the page draws with, every figure Radial shows, and fails if one leaves the +// range its source gives. node machines/radial/check.mjs (CI runs it on every push). +import {CAM, CYL, DISPL_IN3, DISPL_L, E, FIRE, GEAR, hpOf, LAW, lift, liftFromTiming, ORDER, pinAngle, RATING, ROWS, stateAt} from './r2800-shared/engine.js'; +import {DURATION, rpmAt, sparkList, thetaAt} from './r2800-shared/schedule.js'; + +let bad = 0; +const near = (name, v, lo, hi, unit = '') => { + const ok = v >= lo && v <= hi; + if (!ok) bad++; + console.log(`${ok ? 'ok ' : 'BAD'} ${name.padEnd(52)} ${Number(v.toPrecision(6))} ${unit} [${lo} … ${hi}]`); +}; +const mod = (a, m) => ((a % m) + m) % m; + +// displacement: π/4 × 5.75² × 6 × 18 = 2,804.5 in³ [W] +near('displacement', DISPL_IN3, 2804, 2805, 'in³'); +near('displacement', DISPL_L, 45.9, 46.0, 'L'); + +// the firing order: +11, −7 [H], each cylinder once in 720°, 40° apart, the rows alternating +const BRIEF = '1-12-5-16-9-2-13-6-17-10-3-14-7-18-11-4-15-8'; +near('firing order is ' + BRIEF, ORDER.join('-') === BRIEF ? 1 : 0, 1, 1); +near('cylinders in the order, each once', new Set(ORDER).size, 18, 18); +let alt = 0; +for (let i = 0; i < 18; i++) if (CYL[ORDER[i] - 1].row !== CYL[ORDER[(i + 1) % 18] - 1].row) alt++; +near('consecutive firings in different rows', alt, 18, 18); +const gaps = ORDER.map((c, i) => mod(FIRE[ORDER[(i + 1) % 18]] - FIRE[c], 720)); +near('interval between firings (min)', Math.min(...gaps), 40, 40, '°'); +near('interval between firings (max)', Math.max(...gaps), 40, 40, '°'); +// at its firing TDC the row's crankpin points at the cylinder (the geometry agrees with the order) +let miss = 0; +for (const cy of CYL) miss = Math.max(miss, Math.abs(((mod(pinAngle(cy.row, FIRE[cy.c]) - cy.angle, 360) + 180) % 360) - 180)); +near('crankpin on the cylinder at its firing', miss, 0, 1e-9, '°'); +// every spark of the film, counted per cylinder over the running part: once per two turns +{ + const sp = sparkList(); + const t0 = 8; + const t1 = DURATION - 0.5; + const turns = (thetaAt(t1) - thetaAt(t0)) / 360; + const per = CYL.map((cy) => sp.filter((s) => s[1] === cy.c && s[0] >= t0 && s[0] < t1).length); + near('sparks per cylinder per 2 turns (film)', Math.min(...per) / (turns / 2), 0.98, 1.02); + near('', Math.max(...per) / (turns / 2), 0.98, 1.02); +} + +// the master rod and the articulated rods, exact: the master's piston follows the plain slider-crank law +const mF = LAW[E.master.front]; +near('master stroke (2 × crank throw)', mF.stroke, 152.399, 152.401, 'mm'); +near('master TDC at its pin angle', Math.abs(mF.tdcLag), 0, 0.05, '°'); +const arts = CYL.filter((c) => c.c !== E.master.front && c.c !== E.master.rear).map((c) => LAW[c.c]); +near('articulated strokes, shortest', Math.min(...arts.map((a) => a.stroke)), 152.4, 153.5, 'mm'); +near('articulated strokes, longest', Math.max(...arts.map((a) => a.stroke)), 152.4, 153.5, 'mm'); +near('articulated TDC, largest shift', Math.max(...arts.map((a) => Math.abs(a.tdcLag))), 0.1, 6, '°'); +near('articulated TDC, lowest below the master', -Math.min(...arts.map((a) => a.dTDC)), 0, 4, 'mm'); +near('compression ratio, master', mF.cr, 6.7499, 6.7501); +near('compression ratio, lowest articulated', Math.min(...arts.map((a) => a.cr)), 6.0, 6.75); +for (const row of ['rear', 'front']) { + const ws = ROWS[row].filter((c) => c.c !== E.master[row]).sort((a, b) => Math.abs(LAW[b.c].tdcLag) - Math.abs(LAW[a.c].tdcLag))[0]; + const x = LAW[ws.c]; + console.log(` ${row} row: master ${E.master[row]}, most different ${ws.c}: stroke ${x.stroke.toFixed(3)} mm, TDC ${x.tdcLag.toFixed(2)}°, ${(-x.dTDC).toFixed(2)} mm lower, CR ${x.cr.toFixed(3)}`); +} + +// the cam rings: 4 lobes at ⅛ crank speed against the crank [H]; the lift read off the ring equals the valve timing +near('cam ring speed', CAM.ratio, -0.125, -0.125); +near('lobes × 2 × speed = once per two turns', CAM.lobes * 2 * Math.abs(CAM.ratio), 1, 1); +let err = 0; +let opens = 0; +for (const cy of CYL) + for (const ev of ['in', 'ex']) { + let prev = lift(cy.c, ev, -0.5); + for (let th = 0; th < 720; th += 0.5) { + const a = lift(cy.c, ev, th); + err = Math.max(err, Math.abs(a - liftFromTiming(cy.c, ev, th))); + if (a > 0.5 && prev <= 0.5) opens++; + prev = a; + } + } +near('cam lift vs valve timing (max error)', err, 0, 1e-9); +near('valve openings in 720° (36 valves)', opens, 36, 36); + +// power: the take-off point is exact [F], the maximum-continuous point within 7 % +const to = stateAt(RATING.takeoff.rpm); +near('take-off power at 2,700 rpm', to.hp, 2049.9, 2050.1, 'hp'); +near('take-off manifold pressure', to.map, 54.99, 55.01, 'inHg'); +near('METO 1,800 hp at 2,600 rpm, 48.5″ (model)', hpOf(RATING.meto.map, RATING.meto.rpm), 1800 * 0.93, 1800 * 1.07, 'hp'); +near('take-off torque', to.torque, 5400, 5415, 'N·m'); +near('firing frequency at 2,700 rpm', to.fireHz, 405, 405, 'Hz'); +near('mean piston speed at 2,700 rpm', to.pistonMs, 13.71, 13.72, 'm/s'); +near('propeller at 2,700 rpm (0.45 : 1)', to.propRpm, 1215, 1215, 'rpm'); +near('impeller at 2,700 rpm (7.29 : 1)', to.impRpm, 19683, 19683, 'rpm'); +near('drawn reduction gear 72 / (72 + 88)', 72 / (72 + 88), GEAR.prop, GEAR.prop); +near('idle manifold pressure (model)', stateAt(RATING.idle).map, 8, 16, 'inHg'); + +// the film's run reaches take-off rpm and comes back to idle +near('film: peak rpm', Math.max(...Array.from({length: 400}, (_, i) => rpmAt(i / 10))), 2690, 2701, 'rpm'); +near('film: rpm at the end', rpmAt(DURATION), RATING.idle - 5, RATING.idle + 5, 'rpm'); + +if (bad) { + console.error(`\n${bad} figure(s) out of range`); + process.exit(1); +} +console.log('\nevery figure in range'); diff --git a/machines/radial/og.png b/machines/radial/og.png new file mode 100644 index 0000000000000000000000000000000000000000..2221eb466ff7c806ceb84271193d506b30b24fd0 GIT binary patch literal 413262 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
9|%5p(D4)unz9XeQ|{!)K7lSiwI_% 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 { + const d = document.createElement('div'); + d.innerHTML = h.trim(); + return d.firstElementChild; +}; +const fInt = (x) => nf(Math.round(x)); +const D2R = Math.PI / 180; + +/** a round dial: the face and ticks are drawn once, the needle every frame */ +function dial(svg, {cx, cy, r, min, max, major, minor, label, unit, scaleTxt = (v) => nf(v), red, skipEnds = false}) { + const a0 = -225; + const a1 = 45; + const ang = (v) => a0 + ((v - min) / (max - min)) * (a1 - a0); + const P = (a, rr) => [cx + Math.cos(a * D2R) * rr, cy + Math.sin(a * D2R) * rr]; + let h = ``; + for (let v = min; v <= max + 1e-6; v += minor) { + const isMaj = Math.abs(((v - min) / major) % 1) < 1e-6 || Math.abs(((v - min) / major) % 1 - 1) < 1e-6; + const [x0, y0] = P(ang(v), r - 6); + const [x1, y1] = P(ang(v), r - (isMaj ? 15 : 10)); + h += ``; + if (isMaj && !(skipEnds && (Math.abs(v - min) < 1e-6 || Math.abs(v - max) < 1e-6))) { + const [tx, ty] = P(ang(v), r - (r > 60 ? 26 : 23)); + h += `${scaleTxt(v)}`; + } + } + if (red !== undefined) { + const [x0, y0] = P(ang(red), r - 5); + const [x1, y1] = P(ang(red), r - 18); + h += ``; + } + const ly = cy + r * (r > 60 ? 0.42 : 0.66); + h += `${label}`; + h += `${unit}`; + h += ``; + svg.insertAdjacentHTML('beforeend', h); + const ndl = svg.lastElementChild.previousElementSibling; + return (v) => ndl.setAttribute('transform', `rotate(${ang(Math.min(max, Math.max(min, v))) + 90} ${cx} ${cy})`); +} + +export function createConsole(app) { + const style = document.createElement('style'); + style.textContent = CSS; + document.head.appendChild(style); + const ui = el(`

`); + app.appendChild(ui); + const add = (h) => { + const n = el(h); + ui.appendChild(n); + return n; + }; + + // ------------------------------------------------------------ title plate + add(`
`); + add(`
RADIAL
`); + add(`
${tr('subtitle')}
`); + add(`
${tr('model')}
`); + + // ------------------------------------------------------------ instruments + add(`
`); + add(`
${tr('fig', 1)}${tr('figInstr')}
`); + const dsvg = add(``); + const setRpm = dial(dsvg, {cx: 84, cy: 108, r: 76, min: 0, max: 3000, major: 500, minor: 100, label: tr('dRpm'), unit: tr('dRpmU'), scaleTxt: (v) => nf(v / 100), red: RATING.takeoff.rpm}); + const setMap = dial(dsvg, {cx: 222, cy: 56, r: 52, min: 10, max: 70, major: 20, minor: 5, label: tr('dMap'), unit: 'IN HG', red: RATING.takeoff.map, skipEnds: true}); + const setHp = dial(dsvg, {cx: 222, cy: 164, r: 52, min: 0, max: 2500, major: 500, minor: 250, label: tr('dHp'), unit: 'HP × 100', scaleTxt: (v) => nf(v / 100), red: RATING.takeoff.hp, skipEnds: true}); + const readTop = 382; + const rowsTxt = ['rTorque', 'rPiston', 'rProp'].map((k, i) => + add(`
${tr(k)}
`).querySelector('b'), + ); + + // ------------------------------------------------------------ data plate + add(`
`); + add(`
${tr('fig', 2)}${tr('figData')}
`); + const data = [ + ['pBore', `${nf(5.75, 2)} × ${nf(6, 2)} in`], + ['pDispl', `${fInt(DISPL_IN3)} in³ · ${nf(DISPL_L, 1)} L`], + ['pCr', `${nf(E.cr, 2)} : 1`], + ['pTo', `${fInt(RATING.takeoff.hp)} hp · ${fInt(RATING.takeoff.rpm)} · ${nf(RATING.takeoff.map, 1)}″`], + ['pWet', `${fInt(RATING.wet.hp)} hp · ${fInt(RATING.wet.rpm)} · ${nf(RATING.wet.map, 1)}″`], + ['pRed', `${nf(GEAR.prop, 2)} : 1`], + ['pSc', tr('pScV', nf(GEAR.impLow, 2), nf(GEAR.impHigh, 2))], + ['pMass', `${fInt(MASS_KG)} kg`], + ['pCam', tr('pCamV')], + ['pIgn', tr('pIgnV')], + ]; + data.forEach(([k, v], i) => add(`
${tr(k)}${v}
`)); + + // ------------------------------------------------------------ the run: phase, slow motion, live controls + add(`
`); + add(`
${tr('fig', 3)}${tr('figRun')}
`); + const phaseTxt = add(`
`); + const slowTxt = add(`
`); + const btn = {}; + ['starter', 'ignition', 'slowmo', 'pause'].forEach((k, i) => { + btn[k] = add(`
${tr({starter: 'bStarter', ignition: 'bIgnition', slowmo: 'bSlow', pause: 'pause'}[k])}
`); + }); + add(`
${tr('throttle')}
`); + const thrVal = add(`
`); + const SL = {x: 44, w: 260}; + add(`
`); + const thrKnob = add(`
`); + + + // ------------------------------------------------------------ firing-order star + add(`
`); + add(`
${tr('fig', 4)}${tr('figStar')}
`); + add(`
${tr('starSub')}
`); + const SC = {cx: 146, cy: 112, rr: 64, rf: 92}; + const star = add(``); + const sp = (a, r) => [SC.cx - Math.sin(a * D2R) * r, SC.cy - Math.cos(a * D2R) * r]; + { + let h = ``; + h += ``; + for (const cy of CYL) { + const [x, y] = sp(cy.angle, cy.row === 'rear' ? SC.rr : SC.rf); + h += ``; + h += `${cy.c}`; + } + h += ``; + h += `${tr('starKey')}`; + star.innerHTML = h; + } + const starDots = Object.fromEntries(CYL.map((cy) => [cy.c, star.querySelector(`[data-c="${cy.c}"]`)])); + const starTxt = Object.fromEntries(CYL.map((cy) => [cy.c, star.querySelector(`[data-t="${cy.c}"]`)])); + const pins = star.querySelector('.pins'); + const orderBox = add(`
`); + orderBox.innerHTML = ORDER.map((c) => `${c}`).join(''); + const orderSpans = Object.fromEntries(ORDER.map((c) => [c, orderBox.querySelector(`[data-o="${c}"]`)])); + const starFoot = add(`
`); + + // ------------------------------------------------------------ context figure + add(`
`); + const ctxTitle = add(`
`); + const ctxSvg = add(``); + const ctxTxt = add(`
`); + + // ------------------------------------------------------------ subsystems, cutaways, views, layers + add(`
`); + const spots = {}; + const group = (title, keys, y, label, cols) => { + add(`
${title}
`); + const W = 264; + const gap = 4; + const w = (W - gap * (cols - 1)) / cols; + keys.forEach((k, i) => { + const x = 1294 + (i % cols) * (w + gap); + const yy = y + 15 + Math.floor(i / cols) * 25; + btn[k] = add(`
${label(k)}
`); + spots[k] = [x + w / 2, yy + 11]; + }); + return y + 15 + Math.ceil(keys.length / cols) * 25 + 4; + }; + let y = group(tr('grpSub'), SUBS, 628, (k) => tr('sub:' + k), 2); + y = group(tr('grpCut'), CUTS, y, (k) => tr('cut:' + k), 3); + y = group(tr('grpView'), CAMS, y, (k) => tr('cam:' + k), 4); + group(tr('grpLayer'), LAYERS, y, (k) => tr('lay:' + k), 2); + ['starter', 'ignition', 'slowmo', 'pause'].forEach((k, i) => (spots[k] = [42 + i * 66.5 + 31, 813])); + spots.throttle = [SL.x + SL.w * 0.15, 853]; + spots.throttleBack = [SL.x + SL.w, 853]; + + // ------------------------------------------------------------ caption, callouts, cursor + const cap = add(`
`); + const leaders = add(``); + const callPool = []; + const cursor = add(``); + const ring = add(`
`); + + // ------------------------------------------------------------ context figures + const plot = (pts, x0, y0, w, h, xr, yr, color, width = 1.6, dash = '') => { + const X = (x) => x0 + ((x - xr[0]) / (xr[1] - xr[0])) * w; + const Y = (v) => y0 + h - ((v - yr[0]) / (yr[1] - yr[0])) * h; + return ``; + }; + const axes = (x0, y0, w, h, xl, yl) => + `` + + `${xl}${yl}`; + // the piston law: master against its most different articulated rod, the difference magnified + const lawCyl = (row) => ROWS[row].filter((c) => c.c !== E.master[row]).reduce((a, b) => (Math.abs(LAW[b.c].tdcLag) > Math.abs(LAW[a.c].tdcLag) ? b : a)).c; + const lawStatic = {}; + const lawFig = (row) => { + if (lawStatic[row]) return lawStatic[row]; + const m = E.master[row]; + const a = lawCyl(row); + const dm = CYL[a - 1].angle - CYL[m - 1].angle; + const t0 = LAW[m].thTDC; + const ptsD = []; + for (let i = 0; i <= 180; i++) { + const x = i * 2; + ptsD.push([x, pistonS(a, t0 + x + dm) - pistonS(m, t0 + x)]); + } + const lo = Math.min(...ptsD.map((p) => p[1])); + const hi = Math.max(...ptsD.map((p) => p[1])); + const ym = Math.max(Math.abs(lo), Math.abs(hi)) * 1.15; + const h = + axes(30, 6, 236, 100, tr('lawX'), tr('lawY')) + + `` + + plot(ptsD, 30, 6, 236, 100, [0, 360], [-ym, ym], C.acc, 2.2) + + `+${nf(ym, 1)}−${nf(ym, 1)}`; + lawStatic[row] = {h, m, a, dm, ym, t0}; + return lawStatic[row]; + }; + const camFig = {}; + const camFigFor = (c) => { + if (camFig[c]) return camFig[c]; + const pi = []; + const pe = []; + for (let i = 0; i <= 240; i++) { + const th = FIRE[c] + i * 3; + pi.push([i * 3, lift(c, 'in', th)]); + pe.push([i * 3, lift(c, 'ex', th)]); + } + const h = axes(30, 6, 236, 96, tr('camX'), tr('camY')) + plot(pe, 30, 6, 236, 96, [0, 720], [0, 1.15], C.ink, 1.8, '4 3') + plot(pi, 30, 6, 236, 96, [0, 720], [0, 1.15], C.ink, 2) + [180, 360, 540].map((x) => ``).join('') + ['power', 'exhaust', 'intake', 'compression'].map((k, i) => `${tr('st:' + k)}`).join(''); + camFig[c] = h; + return h; + }; + const toFig = (() => { + const pts = []; + for (let N = 600; N <= 2800; N += 50) pts.push([N, propHp(N)]); + const tq = []; + for (let N = 600; N <= 2800; N += 50) tq.push([N, stateAt(N).torque]); + return axes(30, 6, 236, 100, tr('toX'), tr('toY')) + plot(pts, 30, 6, 236, 100, [600, 2800], [0, 2500], C.ink, 2) + plot(tq.map(([a, b]) => [a, b / 2.4]), 30, 6, 236, 100, [600, 2800], [0, 2500], C.ink, 1.6, '4 3') + ``; + })(); + let ctxKey = ''; + + const update = (s) => { + // dials and readouts + setRpm(s.N); + setMap(s.map); + setHp(s.hp); + rowsTxt[0].textContent = `${fInt(s.torque)} N·m · ${fInt(s.torque * 0.7376)} lb·ft`; + rowsTxt[1].textContent = `${nf(s.pistonMs, 1)} m/s`; + rowsTxt[2].textContent = `${fInt(s.propRpm)} · ${fInt(s.impRpm)}`; + // the run + phaseTxt.textContent = tr('ph:' + s.phase); + slowTxt.innerHTML = s.rate < 0.98 ? tr('slow', nf(1000 * s.rate, 0), nf(1 / s.rate, 0)) : tr('realtime'); + thrVal.textContent = `${fInt(s.thrRpm ?? s.N)} ${tr('rpmShort')}`; + thrKnob.style.left = `${SL.x + SL.w * Math.min(1, Math.max(0, ((s.thrRpm ?? s.N) - RATING.idle) / (RATING.takeoff.rpm - RATING.idle)))}px`; + btn.starter.classList.toggle('on', !!s.starter); + btn.ignition.classList.toggle('on', !!s.ignition); + btn.pause.classList.toggle('on', !!s.paused); + btn.slowmo.classList.toggle('on', s.rate < 0.98); + // the star: the crank pins turn, the cylinder that fires lights + pins.setAttribute('transform', `rotate(${-s.th} ${SC.cx} ${SC.cy})`); + let best = 0; + let bestC = 0; + for (const cy of CYL) { + const g = s.lit[cy.c - 1]; + const dot = starDots[cy.c]; + const k = Math.min(1, g * 1.6); + dot.setAttribute('fill', k > 0.02 ? `rgba(10,143,224,${(0.2 + 0.8 * k).toFixed(3)})` : cy.row === 'rear' ? '#e7e3d8' : '#fbf9f3'); + dot.setAttribute('stroke', k > 0.3 ? C.acc : C.ink); + starTxt[cy.c].setAttribute('fill', k > 0.5 ? '#fff' : C.ink); + if (g > best) [best, bestC] = [g, cy.c]; + } + for (const c of ORDER) { + const on = c === bestC && best > 0.15; + orderSpans[c].style.color = on ? '#fff' : C.ink; + orderSpans[c].style.background = on ? C.acc : 'transparent'; + } + starFoot.innerHTML = tr('starFoot', nf(s.fireHz, 0)); + // context figure + const key = s.ctx + ':' + (s.ctxArg ?? ''); + if (key !== ctxKey) { + ctxKey = key; + ctxTitle.innerHTML = `${tr('fig', 5)}${tr('ctx:' + s.ctx)}`; + if (s.ctx === 'law') ctxSvg.innerHTML = lawFig(s.ctxArg || 'front').h + ``; + else if (s.ctx === 'cam') ctxSvg.innerHTML = camFigFor(s.ctxArg) + ``; + else if (s.ctx === 'takeoff') ctxSvg.innerHTML = toFig + ``; + else if (s.ctx === 'throws') ctxSvg.innerHTML = ``; + else ctxSvg.innerHTML = ``; + } + const cur1 = ctxSvg.querySelector('.cur1'); + if (s.ctx === 'law') { + const L = lawFig(s.ctxArg || 'front'); + const m = LAW[L.m]; + const a = LAW[L.a]; + const th = (((s.th - L.t0) % 360) + 360) % 360; + const x = 30 + (th / 360) * 236; + const d = pistonS(L.a, s.th + L.dm) - pistonS(L.m, s.th); + cur1.innerHTML = ``; + ctxTxt.innerHTML = tr('lawTxt', L.m, L.a, nf(m.stroke, 2), nf(a.stroke, 2), nf(Math.abs(a.tdcLag), 1), nf(-a.dTDC, 2), nf(m.cr, 2), nf(a.cr, 2), a.tdcLag > 0); + } else if (s.ctx === 'cam') { + const c = s.ctxArg; + const ph = (((s.th - FIRE[c]) % 720) + 720) % 720; + const x = 30 + (ph / 720) * 236; + cur1.innerHTML = ``; + ctxTxt.innerHTML = tr('camTxt', c, CAM.lobes, nf(CAM.liftMm, 1), nf(lift(c, 'in', s.th) * CAM.liftMm, 1), nf(lift(c, 'ex', s.th) * CAM.liftMm, 1), VALVE.in, VALVE.ex); + } else if (s.ctx === 'takeoff') { + const x = 30 + ((Math.min(2800, Math.max(600, s.N)) - 600) / 2200) * 236; + const yv = 6 + 100 - (Math.min(2500, s.hp) / 2500) * 100; + cur1.innerHTML = ``; + ctxTxt.innerHTML = tr('toTxt', fInt(s.hp), fInt(s.N), nf(s.map, 1), fInt(s.torque)); + } else if (s.ctx === 'throws') { + // the two crankpins seen from the front, and the rows + const cx = 70; + const cy = 66; + const rr = s.th * D2R; + const p = (a, r) => [cx - Math.sin(a) * r, cy - Math.cos(a) * r]; + const [x1, y1] = p(rr, 34); + const [x2, y2] = p(rr + Math.PI, 34); + cur1.innerHTML = `${tr('throwKey')}` + + `${tr('throwA')}${tr('throwA2')}${tr('throwB')}${tr('throwB2')}`; + ctxTxt.innerHTML = tr('throwTxt'); + } else if (s.ctx === 'ign') { + cur1.innerHTML = ''; + ctxTxt.innerHTML = tr('ignTxt'); + } else { + cur1.innerHTML = ''; + ctxTxt.innerHTML = tr('ctxTxt:' + s.ctx); + } + const plain = !['law', 'cam', 'takeoff', 'throws'].includes(s.ctx); + ctxTxt.style.top = plain ? '418px' : '548px'; + ctxTxt.style.fontSize = plain ? '15px' : '13px'; + // buttons + for (const k of SUBS) btn[k].classList.toggle('on', s.sub === k); + for (const k of CUTS) btn[k].classList.toggle('on', s.cut === k); + for (const k of CAMS) btn[k].classList.toggle('on', s.camBtn === k); + btn.cowl.classList.toggle('on', !!s.layers?.cowl); + btn.callouts.classList.toggle('on', !!s.layers?.callouts); + // caption + cap.textContent = s.caption || ''; + cap.style.display = s.caption ? '' : 'none'; + // callouts + const list = s.callouts || []; + let lh = ''; + list.forEach((c, i) => { + let d = callPool[i]; + if (!d) { + d = add(`
`); + callPool[i] = d; + } + const o = c.o ?? 1; + if (!c.at || o < 0.02) { + d.style.display = 'none'; + return; + } + d.style.display = ''; + d.style.opacity = o; + d.querySelector('b').textContent = c.name; + d.querySelector('span').textContent = c.sub || ''; + const right = c.w < 0; + const [lx, ly] = c.label; + d.style.left = right ? '' : `${lx}px`; + d.style.right = right ? `${1600 - lx}px` : ''; + d.style.textAlign = right ? 'right' : 'left'; + d.classList.toggle('r', right); + d.style.top = `${ly - 17}px`; + const ex = lx; + const kx = ex + (right ? 1 : -1) * Math.abs(c.w) * 0.25; + lh += ``; + }); + for (let i = list.length; i < callPool.length; i++) callPool[i].style.display = 'none'; + leaders.innerHTML = lh; + // cursor + const cu = s.cursor || {x: -99, y: -99}; + cursor.style.transform = `translate(${cu.x - 3}px, ${cu.y - 2}px) scale(${cu.press ? 0.9 : 1})`; + ring.style.left = `${cu.ringX ?? 0}px`; + ring.style.top = `${cu.ringY ?? 0}px`; + ring.style.opacity = cu.ring ?? 0; + ring.style.transform = `scale(${1.6 - 0.6 * (cu.ring ?? 0)})`; + }; + return {root: ui, btn, spots, update, SL, thrKnob}; +} +void DISPL_IN3; diff --git a/machines/radial/r2800-shared/engine.js b/machines/radial/r2800-shared/engine.js new file mode 100644 index 0000000..34b6b4b --- /dev/null +++ b/machines/radial/r2800-shared/engine.js @@ -0,0 +1,222 @@ +// The R-2800 Double Wasp, the numbers: one source for every figure the page shows and every pose the 3D takes. +// Modelled on a C-series R-2800 CB16 (Douglas DC-6B, Convair 340) from public sources; not affiliated with Pratt & +// Whitney. The letters match REFERENCES.md: [F] the FAA type certificate data sheet 6A3, [N] the Smithsonian NASM +// record, [H] the FAA powerplant handbook, [W] the published series description, [E] an estimate (not public). +// +// No three.js in here: node imports it for check.mjs, the timeline and the score. Units are millimetres and degrees. +// Angles around the engine are measured clockwise from the top, seen from the rear (the pilot's side); the crankshaft +// turns clockwise seen from the rear, the usual US "right-hand tractor". + +export const E = { + bore: 146.05, // 5.75 in [W] + stroke: 152.4, // 6.0 in [W] + r: 76.2, // crank throw, half the stroke + L: 292, // master rod, crankpin centre to piston pin [E] + rk: 60.3, // knuckle-pin circle on the master rod's big end, 2.375 in [E] + l: 231.7, // articulated rod, knuckle pin to piston pin: L - rk [E] + cr: 6.75, // compression ratio of the C series [W] + compH: 66, // piston pin to crown [E] + rowZ: {rear: -105, front: 105}, // the two rows along the axis [E] + master: {rear: 13, front: 8}, // the cylinders that carry the master rods [E] +}; +export const DISPL_IN3 = (Math.PI / 4) * 5.75 ** 2 * 6 * 18; // 2,804.5 in³ +export const DISPL_L = DISPL_IN3 * 0.016387064; // 45.96 L +export const RATING = { + takeoff: {hp: 2050, rpm: 2700, map: 55.0}, // dry, two minutes, low blower [F] + wet: {hp: 2400, rpm: 2800, map: 59.5}, // water-alcohol injection [F] + meto: {hp: 1800, rpm: 2600, map: 48.5}, // maximum continuous [F] + idle: 700, // [E] + crank: 140, // starter cranking speed [E] +}; +export const GEAR = {prop: 0.45, impLow: 7.29, impHigh: 8.58}; // [F] +export const MASS_KG = 1068; // 2,350 lb [N] +export const DIAMETER_MM = 1341; // 52.8 in [N] +export const LENGTH_MM = 2068; // 81.4 in [N] +export const PROP_D = 4.0; // m, a three-blade Hamilton Standard [E] + +// ------------------------------------------------------------ cylinders, numbering and firing order +// 1 at the top of the rear row, then clockwise seen from the rear: odd numbers in the rear row, even in the front, +// the front row turned 20° from the rear one [H]. 18 cylinders, 20° apart, 40° within a row. +export const CYL = Array.from({length: 18}, (_, i) => { + const c = i + 1; + const row = c % 2 ? 'rear' : 'front'; + return {c, row, k: Math.floor(i / 2), angle: 20 * i, z: E.rowZ[row]}; +}); +export const ROWS = {rear: CYL.filter((x) => x.row === 'rear'), front: CYL.filter((x) => x.row === 'front')}; +// the firing order numbers of an 18-cylinder twin-row radial are +11 and -7 [H] +export const ORDER = (() => { + const o = [1]; + while (o.length < 18) { + const a = o[o.length - 1] + 11; + o.push(a <= 18 ? a : o[o.length - 1] - 7); + } + return o; +})(); +export const INTERVAL = 720 / 18; // 40° of crank between firings +export const FIRE = Object.fromEntries(ORDER.map((c, i) => [c, i * INTERVAL])); // crank angle of each firing TDC +export const SPARK_ADV = 25; // ° before TDC [E] +const mod = (a, m) => ((a % m) + m) % m; +export const wrap180 = (a) => mod(a + 180, 360) - 180; +/** four-stroke phase of cylinder c, degrees after its firing TDC: 0-180 power, 180-360 exhaust, 360-540 intake, 540-720 compression */ +export const psi = (c, th) => mod(th - FIRE[c], 720); +export const STROKES = ['power', 'exhaust', 'intake', 'compression']; +export const strokeOf = (ps) => STROKES[Math.floor(mod(ps, 720) / 180)]; + +// ------------------------------------------------------------ the crank and the rods, exact +const vec = (a) => [Math.sin((a * Math.PI) / 180), Math.cos((a * Math.PI) / 180)]; +const rotCW = ([x, y], a) => { + const c = Math.cos((a * Math.PI) / 180); + const s = Math.sin((a * Math.PI) / 180); + return [x * c + y * s, -x * s + y * c]; +}; +const dot = (a, b) => a[0] * b[0] + a[1] * b[1]; +const cross = (a, b) => a[0] * b[1] - a[1] * b[0]; +/** the crankpin of a row: the rear one at θ, the front one at θ + 180° */ +export const pinAngle = (row, th) => (row === 'rear' ? th : th + 180); +/** + * every rod of one row at crank angle th: the crankpin C, the master rod's direction d, and for each cylinder its + * piston pin distance from the axis s (mm), its knuckle pin K (the master's own is C) and its piston pin P, in the + * plane of the row seen from the rear (x right, y up) + */ +export function rowPose(row, th) { + const C = vec(pinAngle(row, th)).map((v) => v * E.r); + const m = CYL[E.master[row] - 1]; + const um = vec(m.angle); + const sm = dot(C, um) + Math.sqrt(E.L * E.L - cross(C, um) ** 2); + const Pm = [um[0] * sm, um[1] * sm]; + const d = [(Pm[0] - C[0]) / E.L, (Pm[1] - C[1]) / E.L]; + const out = {C, d, cyl: {}}; + for (const cy of ROWS[row]) { + const u = vec(cy.angle); + if (cy.c === m.c) { + out.cyl[cy.c] = {s: sm, K: C, P: Pm, master: true}; + continue; + } + const kd = rotCW(d, cy.angle - m.angle); + const K = [C[0] + kd[0] * E.rk, C[1] + kd[1] * E.rk]; + const s = dot(K, u) + Math.sqrt(E.l * E.l - cross(K, u) ** 2); + out.cyl[cy.c] = {s, K, P: [u[0] * s, u[1] * s], master: false}; + } + return out; +} +export const pistonS = (c, th) => rowPose(CYL[c - 1].row, th).cyl[c].s; + +// the law of each piston, sampled once at 0.05°: stroke, TDC height and where TDC falls, against the ideal +// slider-crank of the master rod +export const LAW = (() => { + const out = {}; + for (const cy of CYL) { + let max = -1e9; + let min = 1e9; + let thMax = 0; + let thMin = 0; + for (let i = 0; i < 7200; i++) { + const th = i * 0.05; + const s = pistonS(cy.c, th); + if (s > max) [max, thMax] = [s, th]; + if (s < min) [min, thMin] = [s, th]; + } + // the crank angle at which the pin points at this cylinder: TDC for a plain slider-crank + const ideal = mod(cy.angle - (cy.row === 'rear' ? 0 : 180), 360); + const A = (Math.PI / 4) * E.bore * E.bore; + out[cy.c] = {sTDC: max, sBDC: min, stroke: max - min, thTDC: thMax, thBDC: thMin, tdcLag: wrap180(thMax - ideal), bdcLag: wrap180(thMin - ideal - 180), A}; + } + // clearance volume: set by the master's compression ratio; a piston that stops lower leaves a bigger chamber + for (const row of ['rear', 'front']) { + const m = out[E.master[row]]; + const Vc = (m.A * m.stroke) / (E.cr - 1); + for (const cy of ROWS[row]) { + const x = out[cy.c]; + x.Vc = Vc + x.A * (m.sTDC - x.sTDC); + x.cr = (x.Vc + x.A * x.stroke) / x.Vc; + x.dTDC = x.sTDC - m.sTDC; + } + } + return out; +})(); +export const MASTER_STROKE = LAW[E.master.front].stroke; + +// ------------------------------------------------------------ valves: two cam rings, no camshaft +// one ring per row, two tracks (inlet, exhaust), 4 lobes 90° apart, turning at 1/8 crank speed against the crank: +// a lobe reaches each tappet once every 720° of crank [H]. Valve events in crank degrees after the firing TDC [E]. +export const CAM = {lobes: 4, ratio: -1 / 8, liftMm: 15.9, zOff: 88}; +export const VALVE = {in: [340, 600], ex: [130, 380]}; // inlet opens 20° BTDC, closes 60° ABDC; exhaust 50° BBDC to 20° ATDC +const centre = ([a, b]) => (a + b) / 2; +const halfCam = ([a, b]) => (b - a) / 16; // the event's half-width in cam degrees (crank ÷ 8 ÷ 2) +// each track's phase, derived from the firing order: the lobe is centred on cylinder c's tappet when the crank is at +// the centre of c's event. The same constant holds for every cylinder of a row (check.mjs verifies it). +const phaseOf = (row, ev) => { + const c = ROWS[row][0]; + return mod(c.angle + (FIRE[c.c] + centre(VALVE[ev])) / 8, 90); +}; +export const CAM_PHASE = {rear: {in: phaseOf('rear', 'in'), ex: phaseOf('rear', 'ex')}, front: {in: phaseOf('front', 'in'), ex: phaseOf('front', 'ex')}}; +/** the ring's rotation (degrees, clockwise from the rear) at crank angle th: it turns against the crank at 1/8 */ +export const camAngle = (th) => th * CAM.ratio; +/** a lobe's offset in front of cylinder c's tappet, cam degrees, in [-45, 45) */ +export const lobeOffset = (c, ev, th) => { + const cy = CYL[c - 1]; + return mod(cy.angle - camAngle(th) - CAM_PHASE[cy.row][ev] + 45, 90) - 45; +}; +/** the lobe's rise under a tappet: 0..1, a smooth bump over the event's width */ +export const lobeRise = (x, half) => { + const u = Math.abs(x) / half; + return u >= 1 ? 0 : 0.5 + 0.5 * Math.cos(Math.PI * u); +}; +/** valve lift of cylinder c (0..1 of CAM.liftMm), read off the cam ring at crank angle th */ +export const lift = (c, ev, th) => lobeRise(lobeOffset(c, ev, th), halfCam(VALVE[ev])); +/** the same lift from the valve timing alone, for check.mjs */ +export const liftFromTiming = (c, ev, th) => { + const ps = psi(c, th); + const [a, b] = VALVE[ev]; + const x = mod(ps - centre([a, b]) + 360, 720) - 360; + return lobeRise(x / 8, halfCam([a, b])); +}; + +// ------------------------------------------------------------ ignition +// 2 plugs per cylinder (36), 2 magnetos each feeding one plug of every cylinder; a distributor turns at half crank +// speed so each plug fires once in two turns [W] +export const IGN = {plugs: 36, magnetos: 2, distRatio: 0.5}; +/** how long ago (crank degrees) cylinder c's plugs last fired, at th; the flame lights from the spark to ~70° ATDC */ +export const sinceSpark = (c, th) => mod(th - (FIRE[c] - SPARK_ADV), 720); + +// ------------------------------------------------------------ power, from the rpm alone +// quasi-steady: the propeller at fine pitch absorbs P ∝ N³, set to the take-off rating at 2,700 rpm [E]. The power +// needs a brake mean effective pressure; manifold pressure follows from bmep = k·MAP − friction − pumping, k set so +// that the take-off point is exact (2,050 hp needs 55.0 inHg [F]). check.mjs holds the METO point within 7 %. +const HP = 745.7; +const INHG = 0.033864; // bar per inHg +const AMB = 29.92; +export const fmep = (N) => 1.2 + 0.6 * (N / 2700) ** 2; // bar [E] +export const propHp = (N) => RATING.takeoff.hp * (N / RATING.takeoff.rpm) ** 3; +/** bmep in bar for a brake power (hp) at N rpm */ +export const bmepOf = (hp, N) => (N > 1 ? (2 * hp * HP) / ((DISPL_L / 1000) * (N / 60)) / 1e5 : 0); +export const K_MAP = (() => { + const {hp, rpm, map} = RATING.takeoff; + return (bmepOf(hp, rpm) + fmep(rpm) + (AMB - map) * INHG) / map; +})(); +/** brake power from MAP and N (the inverse) */ +export const hpOf = (map, N) => (Math.max(0, K_MAP * map - fmep(N) - (AMB - map) * INHG) * 1e5 * (DISPL_L / 1000) * (N / 60)) / 2 / HP; +/** + * the engine's state at N rpm. run 0..1: how far the engine has caught (0 on the starter, 1 running). Returns + * manifold pressure (inHg), brake power (hp), crank torque (N·m), firing frequency (Hz), mean piston speed (m/s), + * propeller and impeller rpm. + */ +export function stateAt(N, run = 1) { + const hp = run * propHp(N); + const mapRun = N > 1 ? (bmepOf(propHp(N), N) + fmep(N) + AMB * INHG) / (K_MAP + INHG) : AMB; + const mapCrank = AMB - 0.9 * Math.min(1, N / 100); + const map = mapCrank + (mapRun - mapCrank) * run; + const w = (N * 2 * Math.PI) / 60; + return { + N, + map, + hp, + kw: hp * HP * 1e-3, + torque: w > 0.1 ? (hp * HP) / w : 0, + fireHz: (N / 60) * 9, + pistonMs: (2 * E.stroke * 1e-3 * N) / 60, + propRpm: N * GEAR.prop, + impRpm: N * GEAR.impLow, + }; +} +export const AMBIENT_INHG = AMB; diff --git a/machines/radial/r2800-shared/film.js b/machines/radial/r2800-shared/film.js new file mode 100644 index 0000000..70bf3bd --- /dev/null +++ b/machines/radial/r2800-shared/film.js @@ -0,0 +1,298 @@ +// Radial, the film: the R-2800 (model.js) on its run-up stand (stage.js) under the manual-plate overlay (console.js). +// One input, the crank angle θ(t) integrated once from the planned run (schedule.js), poses every piston, rod, cam, +// valve, magneto, gear and the propeller, lights each spark, and drives every gauge. The operator starts the engine, +// watches the firing order go round the star, cuts a row, pulls the rows apart, looks at a cam ring lifting a valve, +// opens the throttle to take-off rpm and closes it again. A pure function of t. +import * as THREE from 'three'; +import {runSim} from 'teardown-kit/runtime.js'; +import {createConsole} from './console.js'; +import {CYL, E, lift, ROWS, stateAt, wrap180} from './engine.js'; +import {loadFonts} from './fonts.js'; +import {T as tr} from './i18n.js'; +import {airAt, camAtName, camSince, DURATION, lastSpark, rateAt, rpmAt, RUN, runAtTau, SCRIPT, starterAtTau, tauAt, thetaAt} from './schedule.js'; +import {createStage} from './stage.js'; + +export {DURATION, SCRIPT}; +export const DEFAULTS = {duration: DURATION, fps: 60, theme: 'light', hud: {enabled: false, title: 'radial', subtitle: ''}, director: {enabled: false}, watermark: ''}; +const D2R = Math.PI / 180; +export const smoother = (x) => { + const u = Math.min(1, Math.max(0, x)); + return u * u * u * (u * (u * 6 - 15) + 10); +}; +export const ss = (a, b, t) => smoother((t - a) / (b - a)); + +// the cylinder the cam view watches: the front-row cylinder near the top whose inlet valve opens mid-hold +export const CAM_CYL = (() => { + const t0 = 24.4; + const t1 = 28.0; + let best = ROWS.front[0].c; + let score = -1e9; + for (const cy of ROWS.front) { + let peak = 0; + let tp = 0; + for (let t = t0; t <= t1; t += 0.02) { + const L = lift(cy.c, 'in', thetaAt(t)); + if (L > peak) [peak, tp] = [L, t]; + } + const top = Math.cos(cy.angle * D2R); + const s = peak * 2 + top * 1.2 - Math.abs(tp - 26.2) * 0.6; + if (s > score) [score, best] = [s, cy.c]; + } + return best; +})(); + +// ------------------------------------------------------------ views, each a function of u (seconds since it came on) +const camAng = CYL[CAM_CYL - 1].angle; +export const VIEW_FN = { + hero: (u) => ({tx: 0, ty: -0.04, tz: 0.04, az: 36 + 1.0 * Math.min(u, 8), el: 9 + 0.3 * Math.min(u, 8), d: 4.7 - 0.05 * Math.min(u, 8), sx: 0, sy: 0}), + face: (u) => ({tx: 0, ty: 0, tz: 0, az: 0, el: 1.5, d: 4.35 - 0.06 * Math.min(u, 6), sx: 0, sy: 0}), + faceFull: (u) => ({tx: 0, ty: 0, tz: 0, az: -4 + 1.2 * u, el: 2, d: 4.5 - 0.04 * u, sx: 0, sy: 0}), + rowcut: (u) => ({tx: 0, ty: 0, tz: 0.1, az: 0, el: 0, d: 3.7 - 0.12 * Math.min(u, 6), sx: 0, sy: 0}), + apart: (u) => ({tx: 0, ty: 0.02, tz: 0.03, az: 58 + 1.6 * u, el: 18, d: 3.4, sx: 0, sy: 0}), + cam: (u) => { + // beside the watched cylinder, looking across it: the cam ring, the tappet, the tube, the rocker, the valve + const a = camAng * D2R; + const ur = [-Math.sin(a), Math.cos(a), 0]; + const ut = [Math.cos(a), Math.sin(a), 0]; + const sw = 0.1 * Math.sin(u * 0.35); + const dir = [0, 1, 2].map((i) => (0.82 + sw) * ut[i] + 0.5 * (i === 2 ? 1 : 0) + 0.22 * ur[i]); + const n = Math.hypot(...dir); + const [dx, dy, dz] = dir.map((v) => v / n); + const R = 0.31; + return {tx: ur[0] * R, ty: ur[1] * R, tz: 0.105 + 0.11, az: Math.atan2(dx, dz) / D2R, el: Math.asin(dy) / D2R, d: 1.8 - 0.02 * u, sx: 0, sy: 0}; + }, + takeoff: (u) => ({tx: 0, ty: -0.05, tz: -0.12, az: 64 + 5.5 * u, el: 7, d: 5.3, sx: 0, sy: 0}), + heroEnd: (u) => ({...VIEW_FN.hero(u), d: 4.8 - 0.03 * u}), + // live-only + profile: () => ({tx: 0, ty: 0, tz: -0.25, az: 90, el: 2, d: 5.4, sx: 0, sy: 0}), + inside: () => { + // across the cut through cylinder 2's axis: the piston, the chamber, both valves and both plugs + const a = CYL[1].angle * D2R; + const ur = [-Math.sin(a), Math.cos(a)]; + const ut = [Math.cos(a), Math.sin(a)]; + const dir = [ut[0] * 0.93 + ur[0] * 0.2, ut[1] * 0.93 + ur[1] * 0.2, 0.3]; + const n = Math.hypot(...dir); + return {tx: ur[0] * 0.47, ty: ur[1] * 0.47, tz: 0.105, az: Math.atan2(dir[0] / n, dir[2] / n) / D2R, el: Math.asin(dir[1] / n) / D2R, d: 0.95, fov: 34, sx: 0, sy: 0}; + }, +}; +const VIEWS = SCRIPT.filter((e) => e.cam).map((e) => [e.t, e.cam]); +export function blend(a, b, k) { + const o = {}; + for (const key in b) o[key] = key === 'az' ? a.az + wrap180(b.az - a.az) * k : key === 'd' ? Math.exp(Math.log(a.d) + (Math.log(b.d) - Math.log(a.d)) * k) : (a[key] ?? b[key]) + (b[key] - (a[key] ?? b[key])) * k; + return o; +} +export const camAt = (t) => { + let i = 0; + while (i < VIEWS.length - 1 && VIEWS[i + 1][0] <= t) i++; + const view = (k) => VIEW_FN[VIEWS[k][1]](t - VIEWS[k][0]); + const cur = view(i); + if (i === 0) return cur; + const k = ss(VIEWS[i][0], VIEWS[i][0] + 1.6, t); + if (k >= 1) return cur; + return blend(view(i - 1), cur, k); +}; + +// ------------------------------------------------------------ what each view shows: subsystem opacity, cut, rows +const ALL = {case: 1, crank: 1, cyl: 1, valve: 1, ign: 1, air: 1, prop: 1, nose: 1, oil: 1, stand: 1, cowl: 0, baffle: 1}; +export const LOOK = { + hero: {vis: ALL}, + face: {vis: {...ALL, prop: 0.3}}, + faceFull: {vis: ALL}, + heroEnd: {vis: ALL}, + takeoff: {vis: ALL}, + rowcut: {vis: {...ALL, prop: 0, ign: 0, air: 0, valve: 0, baffle: 0, oil: 0, cowl: 0}, cut: 'rowcut', hideRear: 1}, + apart: {vis: {...ALL, case: 0, prop: 0, nose: 0, ign: 0, air: 0, valve: 0, baffle: 0, oil: 0, stand: 0, cyl: 0}, apart: 1}, + cam: {vis: {...ALL, case: 0.12, cyl: 0.3, crank: 0, prop: 0, nose: 0, ign: 0, air: 0, baffle: 0, oil: 0, stand: 0}, hideRear: 1, focusK: 1}, +}; +const lookAt = (name) => LOOK[name] || LOOK.hero; +/** the looks of two views, blended: opacities, the apart offset, the hidden rear row */ +export function blendLook(a, b, k) { + const vis = {}; + for (const g of Object.keys(ALL)) vis[g] = (a.vis[g] ?? 1) + ((b.vis[g] ?? 1) - (a.vis[g] ?? 1)) * k; + return {vis, apart: (a.apart || 0) + ((b.apart || 0) - (a.apart || 0)) * k, hideRear: (a.hideRear || 0) + ((b.hideRear || 0) - (a.hideRear || 0)) * k, cut: k < 0.5 ? a.cut : b.cut, focusK: (a.focusK || 0) + ((b.focusK || 0) - (a.focusK || 0)) * k, focus: a.focusK || b.focusK ? CAM_CYL : 0}; +} +export const lookAtT = (t) => { + let i = 0; + while (i < VIEWS.length - 1 && VIEWS[i + 1][0] <= t) i++; + const cur = lookAt(VIEWS[i][1]); + if (i === 0) return blendLook(cur, cur, 1); + const prev = lookAt(VIEWS[i - 1][1]); + return blendLook(prev, cur, ss(VIEWS[i][0] + 0.1, VIEWS[i][0] + 1.1, t)); +}; + +// ------------------------------------------------------------ the operator's pointer: a click on the button of each beat +const REST = [[860, 520], [720, 430], [900, 560], [760, 380]]; +const SPOT_OF = {face: 'face', faceFull: 'face', rowcut: 'section', apart: 'crank', cam: 'valve', takeoff: 'throttle', heroEnd: 'throttleBack'}; +export function makeCursor(ui, script = SCRIPT) { + const EV = script.filter((e) => e.t > 0).map((e) => ({t: e.t, spot: ui.spots[e.press || SPOT_OF[e.cam]] || ui.spots.hero})); + const WP = [[0, 980, 640]]; + EV.forEach((e, i) => { + WP.push([e.t - 0.16, ...e.spot]); + WP.push([e.t + 0.24, ...e.spot]); + WP.push([e.t + 1.6, ...REST[i % REST.length]]); + }); + WP.sort((a, b) => a[0] - b[0]); + return (t) => { + let i = 0; + while (i < WP.length - 2 && t > WP[i + 1][0]) i++; + const [t0, x0, y0] = WP[i]; + const [t1, x1, y1] = WP[i + 1]; + const k = ss(t0, t1, t); + const len = Math.hypot(x1 - x0, y1 - y0); + const bow = Math.sin(Math.PI * k) * Math.min(24, len * 0.07); + let press = false; + let ring = 0; + let rx = 0; + let ry = 0; + for (const e of EV) { + if (t >= e.t - 0.07 && t < e.t + 0.09) press = true; + if (t >= e.t && t < e.t + 0.55) { + ring = 1 - (t - e.t) / 0.55; + [rx, ry] = e.spot; + } + } + return {x: x0 + (x1 - x0) * k + (len ? (-(y1 - y0) / len) * bow : 0), y: y0 + (y1 - y0) * k + (len ? ((x1 - x0) / len) * bow : 0), press, ring, ringX: rx, ringY: ry}; + }; +} + +// ------------------------------------------------------------ sparks to light: from the last spark of each cylinder +/** + * glow of each chamber, 0..1: lit sparks only, fading over ~0.35 s of screen time and ~100° of crank. When the + * firings come faster than the eye (more than ~12 a second on screen) the lights merge into a steady low glow. + * spark(c) → {t (screen s), th (crank °), lit}; now: screen time; th: crank; fireHzScreen: firings per screen second + */ +export function glowOf(spark, now, th, fireHzScreen) { + const merge = ss(12, 60, fireHzScreen); + return CYL.map((cy) => { + const s = spark(cy.c); + if (!s || !s.lit) return 0.22 * merge; + const age = now - s.t; + const dth = th - s.th; + const g = Math.exp(-Math.max(0, age) / 0.35) * (dth < 110 ? 1 : Math.exp(-(dth - 110) / 50)); + return g * (1 - merge) + 0.22 * merge; + }); +} +/** the propeller's blur: how far a blade turns between two frames */ +export const blurOf = (propRpm, rate, fps = 60) => ss(5, 28, (propRpm * 6 * rate) / fps); +export const phaseOf = (tau) => { + const R = RUN; + if (tau < R.starter) return 'stopped'; + if (tau < R.ign) return 'starter'; + if (tau < R.disengage + 0.6) return 'ignition'; + if (tau < R.climb) return 'idle'; + if (tau < R.climb + R.climbLen + 0.3) return 'climb'; + if (tau < R.back) return 'takeoff'; + if (tau < R.back + R.backLen) return 'back'; + return 'idle'; +}; + +// ------------------------------------------------------------ callouts per view, label spots on the 1600 x 900 layout +export function calloutsFor(view, st, vis) { + const P3 = (v) => st.project(v); + const A = st.eng.A; + const out = []; + const c = (key, at, label, w, o = 1) => { + const [name, sub] = tr(key); + out.push({name, sub, at: P3(at), label, w, o: vis * o}); + }; + if (view === 'hero' || view === 'heroEnd') { + c('cProp', A.blade(), [372, 168], 120); + c('cMagneto', A.magneto(), [372, 300], 140); + c('cHarness', A.harness(), [372, 420], 120); + c('cHead', A.head(), [1232, 150], -130); + c('cFins', A.fins(), [1232, 268], -120); + c('cPushrod', A.pushrod(), [1232, 390], -140); + c('cPipe', A.pipe(), [1232, 520], -110); + } else if (view === 'face' || view === 'faceFull') { + c('cStarFront', A.cylAt(2, 560), [372, 200], 160); + c('cStarRear', A.cylAt(5, 560), [372, 610], 160); + c('cNose', A.nose(), [1232, 200], -140); + } else if (view === 'rowcut') { + c('cMaster', A.master('front'), [372, 200], 150); + c('cArt', A.art('front', 12), [1232, 230], -150); + c('cKnuckle', A.pin('front'), [372, 610], 170); + c('cPiston', A.piston(2), [1232, 560], -150); + } else if (view === 'apart') { + c('cPinRear', A.pin('rear'), [372, 220], 150); + c('cPinFront', A.pin('front'), [372, 600], 150); + c('cRows', A.piston(1), [1232, 220], -140); + } else if (view === 'cam') { + c('cCam', A.camRing('front'), [372, 610], 160); + c('cTappet', A.tappet(CAM_CYL, 'in'), [372, 320], 160); + c('cRocker', A.rocker(CAM_CYL, 'in'), [1232, 200], -150); + c('cValve', A.valve(CAM_CYL, 'in'), [1232, 470], -150); + } else if (view === 'takeoff') { + c('cSuper', A.impeller(), [1232, 640], -140); + c('cCarb', A.carb(), [1232, 190], -150); + c('cGear', A.nose(), [372, 190], 130); + c('cStarter', A.starter(), [1232, 470], -130); + } + return out; +} +export const CTX_OF = {hero: 'run', heroEnd: 'run', face: 'ign', faceFull: 'takeoff', rowcut: 'law', apart: 'throws', cam: 'cam', takeoff: 'takeoff'}; +export const BTN_OF = {hero: 'hero', heroEnd: 'hero', face: 'face', faceFull: 'face', rowcut: 'face', apart: 'hero', cam: 'hero', takeoff: 'profile'}; +export const SUB_OF = {rowcut: 'crank', apart: 'crank', cam: 'valve', face: 'ign'}; + +/** one frame of everything from the crank angle and the run's state. Shared by the film and the live tour. */ +export function engineFrame({th, N, run, rate, spark, now}) { + const s = stateAt(N, run); + const fireScreen = s.fireHz * rate; + const lit = glowOf(spark, now, th, fireScreen); + return {s, lit, blur: blurOf(s.propRpm, rate)}; +} + +// ------------------------------------------------------------ the film +export function makeFilm() { + return async ({canvas, capture}) => { + await loadFonts(); + const st = createStage({canvas}); + const resize = () => st.resize(1600, 900, capture ? devicePixelRatio || 1 : Math.min(devicePixelRatio || 1, 2)); + resize(); + const ui = createConsole(document.getElementById('app')); + const cursorAt = makeCursor(ui); + if (window.__SIM_CONFIG?.clean) ui.root.style.display = 'none'; + window.R2800 = {st}; + return { + resize, + render(t) { + const th = thetaAt(t); + const tau = tauAt(t); + const N = rpmAt(t); + const run = runAtTau(tau); + const rate = rateAt(t); + const {s, lit, blur} = engineFrame({th, N, run, rate, spark: (c) => lastSpark(c, t), now: t}); + const view = camAtName(t); + const since = camSince(t); + const look = lookAtT(t); + st.setCut(look.cut ? 'section' : 'solid', look.cut || 'profile'); + const camHi = look.focusK > 0.5 ? CYL.map((cy) => (cy.c === CAM_CYL ? {in: lift(cy.c, 'in', th), ex: lift(cy.c, 'ex', th)} : {in: 0, ex: 0})) : null; + const fx = {th, vis: look.vis, apart: look.apart, hideRear: look.hideRear, focus: look.focus, focusK: look.focusK, glow: lit, headGlow: lit.map((g) => g * 0.85 * (1 - look.focusK)), blur, camHi, air: airAt(t), airK: 0, oil: th / 1440, oilK: 0}; + const c = camAt(t); + st.frame(fx, {...c, az: c.az * D2R, el: c.el * D2R}); + const phase = phaseOf(tau); + ui.update({ + ...s, + th, + lit, + rate, + phase, + starter: starterAtTau(tau) > 0, + ignition: tau >= RUN.ign, + thrRpm: N, + ctx: CTX_OF[view] || 'run', + ctxArg: view === 'cam' ? 0 + CAM_CYL : view === 'rowcut' ? 'front' : undefined, + sub: SUB_OF[view] || '', + cut: look.cut ? 'section' : 'solid', + camBtn: BTN_OF[view], + layers: {cowl: false, callouts: true}, + caption: tr('cap:' + (view === 'hero' && phase !== 'stopped' ? phase : view)), + callouts: calloutsFor(view, st, ss(1.2, 2.0, since) * (view === 'hero' && t > 1.5 ? 1 - ss(1.5, 2.0, t) : 1)), + cursor: cursorAt(t), + }); + return {}; + }, + }; + }; +} +void E; +export const run = () => runSim(DEFAULTS, makeFilm()); diff --git a/machines/radial/r2800-shared/fonts.js b/machines/radial/r2800-shared/fonts.js new file mode 100644 index 0000000..a533605 --- /dev/null +++ b/machines/radial/r2800-shared/fonts.js @@ -0,0 +1,24 @@ +// Radial's own type, inlined (latin subsets, SIL Open Font License): Barlow Condensed, a condensed grotesque in the +// spirit of the period's technical manuals, and Saira Stencil One for the title, the stencil of a crate or a cowling. +// Both builds (the skill's and the site's) load .woff2 as base64. +import b500 from '@fontsource/barlow-condensed/files/barlow-condensed-latin-500-normal.woff2'; +import b700 from '@fontsource/barlow-condensed/files/barlow-condensed-latin-700-normal.woff2'; +import stencil from '@fontsource/saira-stencil-one/files/saira-stencil-one-latin-400-normal.woff2'; + +export const FONT = {cond: "'Barlow Condensed', 'Arial Narrow', sans-serif", stencil: "'Saira Stencil One', 'Barlow Condensed', sans-serif"}; + +let ready = null; +/** registers the faces and resolves when they are usable (the first frame waits on it) */ +export function loadFonts() { + if (ready) return ready; + const face = (family, b64, weight) => { + const bin = atob(b64); + const buf = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) buf[i] = bin.charCodeAt(i); + const f = new FontFace(family, buf, {weight: String(weight), display: 'block'}); + document.fonts.add(f); + return f.load(); + }; + ready = Promise.all([face('Barlow Condensed', b500, 500), face('Barlow Condensed', b700, 700), face('Saira Stencil One', stencil, 400)]).catch(() => {}); + return ready; +} diff --git a/machines/radial/r2800-shared/i18n.js b/machines/radial/r2800-shared/i18n.js new file mode 100644 index 0000000..3ef65c1 --- /dev/null +++ b/machines/radial/r2800-shared/i18n.js @@ -0,0 +1,220 @@ +// Every word on screen, in English (the default), French and Spanish. The language itself, the number format and the +// strings of the page's header and footer are shared by the collection (../../../shared/i18n.js). +import {LANG, LANGS, makeT, nf} from '../../../shared/i18n.js'; + +export {LANG, LANGS, nf}; + +const S = { + // ------------------------------------------------------------ title + subtitle: {en: 'PRATT & WHITNEY R-2800 DOUBLE WASP', fr: 'PRATT & WHITNEY R-2800 DOUBLE WASP', es: 'PRATT & WHITNEY R-2800 DOUBLE WASP'}, + model: { + en: '18 cylinders, two rows · a C-series CB16 after public sources · not affiliated with P&W', + fr: '18 cylindres, deux rangées · un CB16 de série C d’après les sources publiques · sans lien avec P&W', + es: '18 cilindros, dos filas · un CB16 de la serie C según fuentes públicas · sin relación con P&W', + }, + fig: {en: (n) => `FIG. ${n}`, fr: (n) => `FIG. ${n}`, es: (n) => `FIG. ${n}`}, + // ------------------------------------------------------------ instruments + figInstr: {en: 'Instruments', fr: 'Instruments', es: 'Instrumentos'}, + dRpm: {en: 'RPM', fr: 'TR/MIN', es: 'RPM'}, + dRpmU: {en: '× 100', fr: '× 100', es: '× 100'}, + dMap: {en: 'MANIFOLD', fr: 'ADMISSION', es: 'ADMISIÓN'}, + dHp: {en: 'POWER', fr: 'PUISSANCE', es: 'POTENCIA'}, + rTorque: {en: 'Crank torque', fr: 'Couple au vilebrequin', es: 'Par en el cigüeñal'}, + rPiston: {en: 'Mean piston speed', fr: 'Vitesse moyenne de piston', es: 'Velocidad media del pistón'}, + rFire: {en: 'Firings', fr: 'Allumages', es: 'Encendidos'}, + rFireV: {en: (h) => `${h} per second`, fr: (h) => `${h} par seconde`, es: (h) => `${h} por segundo`}, + rProp: {en: 'Propeller · impeller rpm', fr: 'Hélice · rouet, tr/min', es: 'Hélice · rodete, rpm'}, + // ------------------------------------------------------------ data plate + figData: {en: 'Engine data', fr: 'Caractéristiques', es: 'Datos del motor'}, + pBore: {en: 'Bore × stroke', fr: 'Alésage × course', es: 'Diámetro × carrera'}, + pDispl: {en: 'Displacement', fr: 'Cylindrée', es: 'Cilindrada'}, + pCr: {en: 'Compression', fr: 'Compression', es: 'Compresión'}, + pTo: {en: 'Take-off, dry', fr: 'Décollage, sec', es: 'Despegue, seco'}, + pWet: {en: 'Take-off, wet', fr: 'Décollage, injection', es: 'Despegue, inyección'}, + pRed: {en: 'Propeller gear', fr: 'Réducteur', es: 'Reductora'}, + pSc: {en: 'Supercharger', fr: 'Compresseur', es: 'Compresor'}, + pScV: {en: (a, b) => `1 stage, ${a} / ${b} : 1`, fr: (a, b) => `1 étage, ${a} / ${b} : 1`, es: (a, b) => `1 etapa, ${a} / ${b} : 1`}, + pMass: {en: 'Dry weight', fr: 'Masse à sec', es: 'Peso en seco'}, + pCam: {en: 'Valves', fr: 'Distribution', es: 'Distribución'}, + pCamV: {en: '2 cam rings, 4 lobes', fr: '2 anneaux à cames, 4 lobes', es: '2 anillos de levas, 4 lóbulos'}, + pIgn: {en: 'Ignition', fr: 'Allumage', es: 'Encendido'}, + pIgnV: {en: '2 magnetos, 36 plugs', fr: '2 magnétos, 36 bougies', es: '2 magnetos, 36 bujías'}, + // ------------------------------------------------------------ the run + figRun: {en: 'The run', fr: 'La marche', es: 'La marcha'}, + 'ph:stopped': {en: 'STOPPED', fr: 'À L’ARRÊT', es: 'PARADO'}, + 'ph:starter': {en: 'STARTER', fr: 'DÉMARREUR', es: 'ARRANQUE'}, + 'ph:ignition': {en: 'IGNITION', fr: 'ALLUMAGE', es: 'ENCENDIDO'}, + 'ph:idle': {en: 'IDLE', fr: 'RALENTI', es: 'RALENTÍ'}, + 'ph:climb': {en: 'THROTTLE OPEN', fr: 'PLEIN GAZ', es: 'GASES A FONDO'}, + 'ph:takeoff': {en: 'TAKE-OFF RPM', fr: 'RÉGIME DÉCOLLAGE', es: 'RÉGIMEN DE DESPEGUE'}, + 'ph:back': {en: 'THROTTLE BACK', fr: 'RÉDUCTION', es: 'REDUCCIÓN'}, + slow: {en: (ms, x) => `1 s on screen = ${ms} ms · slowed ×${x}`, fr: (ms, x) => `1 s à l’écran = ${ms} ms · ralenti ×${x}`, es: (ms, x) => `1 s en pantalla = ${ms} ms · ralentizado ×${x}`}, + realtime: {en: 'Real time', fr: 'Temps réel', es: 'Tiempo real'}, + bStarter: {en: 'Starter', fr: 'Démarreur', es: 'Arranque'}, + bIgnition: {en: 'Magnetos', fr: 'Magnétos', es: 'Magnetos'}, + pause: {en: 'Pause', fr: 'Pause', es: 'Pausa'}, + bSlow: {en: 'Slow-mo', fr: 'Ralenti', es: 'Lento'}, + throttle: {en: 'THROTTLE · TARGET RPM', fr: 'MANETTE · RÉGIME VISÉ', es: 'ACELERADOR · RÉGIMEN'}, + rpmShort: {en: 'rpm', fr: 'tr/min', es: 'rpm'}, + // ------------------------------------------------------------ the star + figStar: {en: 'Firing order', fr: 'Ordre d’allumage', es: 'Orden de encendido'}, + starSub: {en: 'SEEN FROM THE FRONT · 1 AT THE TOP OF THE REAR ROW', fr: 'VU DE FACE · 1 EN HAUT DE LA RANGÉE ARRIÈRE', es: 'VISTO DE FRENTE · 1 ARRIBA EN LA FILA TRASERA'}, + starKey: {en: 'INSIDE: REAR ROW (ODD) · OUTSIDE: FRONT ROW (EVEN)', fr: 'DEDANS : ARRIÈRE (IMPAIRS) · DEHORS : AVANT (PAIRS)', es: 'DENTRO: TRASERA (IMPARES) · FUERA: DELANTERA (PARES)'}, + starFoot: {en: (h) => `+11, −7 · every 40° · 18 in 2 turns · ${h} /s`, fr: (h) => `+11, −7 · tous les 40° · 18 en 2 tours · ${h} /s`, es: (h) => `+11, −7 · cada 40° · 18 en 2 vueltas · ${h} /s`}, + // ------------------------------------------------------------ the context figure + 'ctx:run': {en: 'The engine', fr: 'Le moteur', es: 'El motor'}, + 'ctxTxt:run': { + en: 'Two rows of nine cylinders, 20° apart, on one two-throw crankshaft. Each row drives its crankpin through one master rod and eight articulated rods.', + fr: 'Deux rangées de neuf cylindres décalées de 20°, sur un vilebrequin à deux manetons. Chaque rangée attaque son maneton par une bielle maîtresse et huit biellettes.', + es: 'Dos filas de nueve cilindros desfasadas 20°, sobre un cigüeñal de dos codos. Cada fila mueve su muñequilla con una biela maestra y ocho bielas articuladas.', + }, + 'ctx:ign': {en: 'Ignition', fr: 'Allumage', es: 'Encendido'}, + ignTxt: { + en: 'Two magnetos, each firing one of the two plugs in every cylinder: 36 plugs. The spark comes 25° before top centre (est.); the distributors turn at half crank speed.', + fr: 'Deux magnétos, chacune allume une des deux bougies de chaque cylindre : 36 bougies. L’étincelle jaillit 25° avant le point mort haut (estim.) ; les distributeurs tournent à mi-régime.', + es: 'Dos magnetos, cada uno enciende una de las dos bujías de cada cilindro: 36 bujías. La chispa salta 25° antes del punto muerto superior (est.); los distribuidores giran a media velocidad.', + }, + 'ctx:law': {en: 'Master and articulated', fr: 'Maîtresse et biellette', es: 'Maestra y articulada'}, + lawX: {en: 'CRANK °', fr: 'VILEBREQUIN °', es: 'CIGÜEÑAL °'}, + lawY: {en: 'DIFFERENCE, MM', fr: 'ÉCART, MM', es: 'DIFERENCIA, MM'}, + lawTxt: { + en: (m, a, sm, sa, lag, dz, cm, ca, late) => `Stroke ${sm} mm (master, ${m}) vs ${sa} mm (${a}). Its top centre comes ${lag}° ${late ? 'late' : 'early'} and ${dz} mm lower: compression ${cm} vs ${ca}.`, + fr: (m, a, sm, sa, lag, dz, cm, ca, late) => `Course ${sm} mm (maîtresse, ${m}) contre ${sa} mm (${a}). Son PMH arrive ${lag}° ${late ? 'plus tard' : 'plus tôt'} et ${dz} mm plus bas : compression ${cm} contre ${ca}.`, + es: (m, a, sm, sa, lag, dz, cm, ca, late) => `Carrera ${sm} mm (maestra, ${m}) frente a ${sa} mm (${a}). Su PMS llega ${lag}° ${late ? 'más tarde' : 'antes'} y ${dz} mm más abajo: compresión ${cm} frente a ${ca}.`, + }, + 'ctx:throws': {en: 'Two throws at 180°', fr: 'Deux manetons à 180°', es: 'Dos codos a 180°'}, + throwKey: {en: 'SEEN FROM THE FRONT', fr: 'VU DE FACE', es: 'VISTO DE FRENTE'}, + throwA: {en: 'REAR ROW PIN', fr: 'MANETON ARRIÈRE', es: 'MUÑEQUILLA TRASERA'}, + throwA2: {en: 'cylinders 1, 3, 5 … 17', fr: 'cylindres 1, 3, 5 … 17', es: 'cilindros 1, 3, 5 … 17'}, + throwB: {en: 'FRONT ROW PIN', fr: 'MANETON AVANT', es: 'MUÑEQUILLA DELANTERA'}, + throwB2: {en: 'cylinders 2, 4, 6 … 18', fr: 'cylindres 2, 4, 6 … 18', es: 'cilindros 2, 4, 6 … 18'}, + throwTxt: { + en: 'The rows are turned 20° and their pins 180°: the firings alternate row to row, 40° apart, so no row fires twice in a row.', + fr: 'Les rangées sont décalées de 20° et leurs manetons de 180° : les allumages alternent d’une rangée à l’autre, tous les 40°.', + es: 'Las filas están desfasadas 20° y sus muñequillas 180°: los encendidos alternan de fila en fila, cada 40°.', + }, + 'ctx:cam': {en: 'Cam ring', fr: 'Anneau à cames', es: 'Anillo de levas'}, + camX: {en: 'CRANK ° AFTER FIRING', fr: 'VILEBREQUIN ° APRÈS ALLUMAGE', es: 'CIGÜEÑAL ° TRAS ENCENDIDO'}, + camY: {en: 'LIFT', fr: 'LEVÉE', es: 'ALZADA'}, + 'st:power': {en: 'POWER', fr: 'DÉTENTE', es: 'EXPANSIÓN'}, + 'st:exhaust': {en: 'EXHAUST', fr: 'ÉCHAPPEMENT', es: 'ESCAPE'}, + 'st:intake': {en: 'INTAKE', fr: 'ADMISSION', es: 'ADMISIÓN'}, + 'st:compression': {en: 'COMPRESSION', fr: 'COMPRESSION', es: 'COMPRESIÓN'}, + camTxt: { + en: (c, n, L, li, le) => `Cylinder ${c}. ${n} lobes per track, the ring at ⅛ crank speed, against it. Inlet ${li} mm, exhaust ${le} mm of ${L} (est.).`, + fr: (c, n, L, li, le) => `Cylindre ${c}. ${n} lobes par piste, l’anneau à ⅛ du régime, en sens inverse. Admission ${li} mm, échappement ${le} mm sur ${L} (estim.).`, + es: (c, n, L, li, le) => `Cilindro ${c}. ${n} lóbulos por pista, el anillo a ⅛ de la velocidad, en sentido contrario. Admisión ${li} mm, escape ${le} mm de ${L} (est.).`, + }, + 'ctx:takeoff': {en: 'Power and torque', fr: 'Puissance et couple', es: 'Potencia y par'}, + toX: {en: 'RPM', fr: 'TR/MIN', es: 'RPM'}, + toY: {en: 'HP · TORQUE (DASHED)', fr: 'CH · COUPLE (TIRETS)', es: 'CV · PAR (TRAZOS)'}, + toTxt: { + en: (hp, n, map, tq) => `${hp} hp at ${n} rpm and ${map} inHg, ${tq} N·m. The FAA rates the CB16 at 2,050 hp, 2,700 rpm, 55.0″ (circle).`, + fr: (hp, n, map, tq) => `${hp} ch à ${n} tr/min et ${map} inHg, ${tq} N·m. La FAA donne au CB16 2 050 ch, 2 700 tr/min, 55,0″ (cercle).`, + es: (hp, n, map, tq) => `${hp} CV a ${n} rpm y ${map} inHg, ${tq} N·m. La FAA certifica el CB16 a 2050 CV, 2700 rpm, 55,0″ (círculo).`, + }, + 'ctx:cyl': {en: 'Cylinders and fins', fr: 'Cylindres et ailettes', es: 'Cilindros y aletas'}, + 'ctxTxt:cyl': { + en: 'Steel barrels under finned aluminium muffs, forged aluminium heads with fins cut from the solid. Black baffles force the air through the fins.', + fr: 'Fûts en acier sous des manchons d’aluminium à ailettes, culasses en aluminium forgé aux ailettes taillées dans la masse. Les déflecteurs noirs forcent l’air entre les ailettes.', + es: 'Camisas de acero bajo manguitos de aluminio con aletas, culatas de aluminio forjado con aletas talladas en la masa. Los deflectores negros obligan al aire a pasar por las aletas.', + }, + 'ctx:air': {en: 'Supercharger', fr: 'Compresseur', es: 'Compresor'}, + 'ctxTxt:air': { + en: 'The carburettor feeds the impeller’s eye; the impeller (7.29 × crank speed) throws the charge into the diffuser and out through 18 pipes, one per cylinder.', + fr: 'Le carburateur alimente l’ouïe du rouet ; le rouet (7,29 × le régime) projette le mélange dans le diffuseur puis dans 18 pipes, une par cylindre.', + es: 'El carburador alimenta el ojo del rodete; el rodete (7,29 × el régimen) lanza la mezcla al difusor y a 18 tubos, uno por cilindro.', + }, + 'ctx:prop': {en: 'Reduction gear', fr: 'Réducteur', es: 'Reductora'}, + 'ctxTxt:prop': { + en: 'A planetary gear in the nose: the sun on the crankshaft, the ring fixed, the carrier on the propeller shaft. 0.45 turn of the propeller per turn of the crank.', + fr: 'Un train planétaire dans le nez : le planétaire sur le vilebrequin, la couronne fixe, le porte-satellites sur l’arbre d’hélice. 0,45 tour d’hélice par tour de vilebrequin.', + es: 'Un tren planetario en el morro: el planeta en el cigüeñal, la corona fija, el portasatélites en el eje de la hélice. 0,45 vueltas de hélice por vuelta de cigüeñal.', + }, + 'ctx:oil': {en: 'Lubrication', fr: 'Lubrification', es: 'Lubricación'}, + 'ctxTxt:oil': { + en: 'Dry sump: the pressure pump at the rear feeds the crankshaft through its journals and drillings to the crankpins and knuckle pins; scavenge pumps return the oil to the tank.', + fr: 'Carter sec : la pompe de pression, à l’arrière, alimente le vilebrequin par ses tourillons et ses perçages jusqu’aux manetons et aux axes de biellettes ; les pompes de récupération renvoient l’huile au réservoir.', + es: 'Cárter seco: la bomba de presión, atrás, alimenta el cigüeñal por sus apoyos y taladros hasta las muñequillas y los bulones; las bombas de recuperación devuelven el aceite al depósito.', + }, + // ------------------------------------------------------------ buttons + grpSub: {en: 'SUBSYSTEMS', fr: 'SOUS-ENSEMBLES', es: 'SUBSISTEMAS'}, + grpCut: {en: 'CUTAWAY', fr: 'COUPE', es: 'CORTE'}, + grpView: {en: 'VIEW', fr: 'VUE', es: 'VISTA'}, + grpLayer: {en: 'LAYERS', fr: 'CALQUES', es: 'CAPAS'}, + 'sub:crank': {en: 'Rods & crank', fr: 'Embiellage', es: 'Bielas y cigüeñal'}, + 'sub:cyl': {en: 'Cylinders & fins', fr: 'Cylindres & ailettes', es: 'Cilindros y aletas'}, + 'sub:valve': {en: 'Cam rings', fr: 'Distribution', es: 'Distribución'}, + 'sub:ign': {en: 'Ignition', fr: 'Allumage', es: 'Encendido'}, + 'sub:air': {en: 'Supercharger', fr: 'Compresseur', es: 'Compresor'}, + 'sub:prop': {en: 'Gear & propeller', fr: 'Réducteur & hélice', es: 'Reductora y hélice'}, + 'sub:oil': {en: 'Lubrication', fr: 'Lubrification', es: 'Lubricación'}, + 'cut:glass': {en: 'Glass', fr: 'Verre', es: 'Cristal'}, + 'cut:section': {en: 'Section', fr: 'Section', es: 'Sección'}, + 'cut:solid': {en: 'Solid', fr: 'Pleine', es: 'Sólido'}, + 'cam:face': {en: 'Face', fr: 'Face', es: 'Frente'}, + 'cam:hero': {en: '¾ front', fr: '¾ avant', es: '¾ frontal'}, + 'cam:profile': {en: 'Profile', fr: 'Profil', es: 'Perfil'}, + 'cam:inside': {en: 'Inside', fr: 'Intérieur', es: 'Interior'}, + 'lay:cowl': {en: 'Cowling', fr: 'Capot', es: 'Capó'}, + 'lay:callouts': {en: 'Labels', fr: 'Légendes', es: 'Rótulos'}, + // ------------------------------------------------------------ captions + 'cap:hero': {en: 'On its run-up stand, propeller stopped', fr: 'Sur son banc d’essai, hélice arrêtée', es: 'En su banco de pruebas, hélice parada'}, + 'cap:stopped': {en: 'On its run-up stand, propeller stopped', fr: 'Sur son banc d’essai, hélice arrêtée', es: 'En su banco de pruebas, hélice parada'}, + 'cap:starter': {en: 'The starter turns the crank, no spark yet', fr: 'Le démarreur entraîne le vilebrequin, pas encore d’étincelle', es: 'El arranque gira el cigüeñal, aún sin chispa'}, + 'cap:ignition': {en: 'Magnetos on: the first firings miss, then catch', fr: 'Magnétos en marche : les premiers allumages ratent, puis prennent', es: 'Magnetos activos: los primeros encendidos fallan y luego prenden'}, + 'cap:idle': {en: 'Running on its own', fr: 'Il tourne seul', es: 'Gira solo'}, + 'cap:face': {en: 'Idle, from the front: the firing order goes round the star', fr: 'Ralenti, de face : l’ordre d’allumage parcourt l’étoile', es: 'Ralentí, de frente: el orden de encendido recorre la estrella'}, + 'cap:rowcut': {en: 'One row in section: a master rod and eight articulated rods', fr: 'Une rangée en coupe : une bielle maîtresse et huit biellettes', es: 'Una fila en sección: una biela maestra y ocho articuladas'}, + 'cap:apart': {en: 'The rows pulled apart: turned 20°, pins at 180°', fr: 'Les rangées écartées : décalées de 20°, manetons à 180°', es: 'Las filas separadas: desfasadas 20°, muñequillas a 180°'}, + 'cap:cam': {en: 'A cam ring lifts a valve, no camshaft', fr: 'Un anneau à cames lève une soupape, sans arbre à cames', es: 'Un anillo de levas abre una válvula, sin árbol de levas'}, + 'cap:takeoff': {en: 'Throttle open: to 2,700 rpm in real time', fr: 'Plein gaz : jusqu’à 2 700 tr/min en temps réel', es: 'Gases a fondo: hasta 2700 rpm en tiempo real'}, + 'cap:faceFull': {en: 'Take-off rpm: 2,050 hp, 405 firings a second', fr: 'Régime décollage : 2 050 ch, 405 allumages par seconde', es: 'Régimen de despegue: 2050 CV, 405 encendidos por segundo'}, + 'cap:heroEnd': {en: 'Throttle back to idle', fr: 'Retour au ralenti', es: 'Vuelta al ralentí'}, + 'cap:live': {en: '', fr: '', es: ''}, + // ------------------------------------------------------------ callouts [name, sub] + cProp: {en: ['Propeller', '3 BLADES · 0.45 × CRANK SPEED'], fr: ['Hélice', '3 PALES · 0,45 × LE RÉGIME'], es: ['Hélice', '3 PALAS · 0,45 × EL RÉGIMEN']}, + cMagneto: {en: ['Magneto', '2 ON THE NOSE · ONE PLUG EACH'], fr: ['Magnéto', '2 SUR LE NEZ · UNE BOUGIE CHACUNE'], es: ['Magneto', '2 EN EL MORRO · UNA BUJÍA CADA UNO']}, + cHarness: {en: ['Ignition harness', 'BRAIDED · 36 LEADS'], fr: ['Faisceau d’allumage', 'TRESSÉ · 36 FILS'], es: ['Arnés de encendido', 'TRENZADO · 36 CABLES']}, + cHead: {en: ['Cylinder head', 'FORGED ALUMINIUM · 2 VALVES'], fr: ['Culasse', 'ALUMINIUM FORGÉ · 2 SOUPAPES'], es: ['Culata', 'ALUMINIO FORJADO · 2 VÁLVULAS']}, + cFins: {en: ['Barrel fins', 'ALUMINIUM MUFF ON STEEL'], fr: ['Ailettes du fût', 'MANCHON ALU SUR ACIER'], es: ['Aletas de la camisa', 'MANGUITO DE ALUMINIO SOBRE ACERO']}, + cPushrod: {en: ['Pushrod tubes', 'FROM THE CAM RING'], fr: ['Tubes de culbuteurs', 'DEPUIS L’ANNEAU À CAMES'], es: ['Tubos de varillas', 'DESDE EL ANILLO DE LEVAS']}, + cPipe: {en: ['Intake pipe', '18 FROM THE SUPERCHARGER'], fr: ['Pipe d’admission', '18 DEPUIS LE COMPRESSEUR'], es: ['Tubo de admisión', '18 DESDE EL COMPRESOR']}, + cStarFront: {en: ['Front row', 'EVEN NUMBERS · 9 CYLINDERS'], fr: ['Rangée avant', 'NUMÉROS PAIRS · 9 CYLINDRES'], es: ['Fila delantera', 'NÚMEROS PARES · 9 CILINDROS']}, + cStarRear: {en: ['Rear row', 'ODD NUMBERS · TURNED 20°'], fr: ['Rangée arrière', 'NUMÉROS IMPAIRS · DÉCALÉE DE 20°'], es: ['Fila trasera', 'NÚMEROS IMPARES · DESFASADA 20°']}, + cNose: {en: ['Nose case', 'REDUCTION GEAR INSIDE'], fr: ['Carter de nez', 'LE RÉDUCTEUR DEDANS'], es: ['Cárter del morro', 'LA REDUCTORA DENTRO']}, + cMaster: {en: ['Master rod', 'ONE PIECE · ON THE CRANKPIN'], fr: ['Bielle maîtresse', 'MONOBLOC · SUR LE MANETON'], es: ['Biela maestra', 'DE UNA PIEZA · EN LA MUÑEQUILLA']}, + cArt: {en: ['Articulated rod', '8 PER ROW · ON KNUCKLE PINS'], fr: ['Biellette', '8 PAR RANGÉE · SUR AXES'], es: ['Biela articulada', '8 POR FILA · EN BULONES']}, + cKnuckle: {en: ['Crankpin', 'r = 76.2 MM · HALF THE STROKE'], fr: ['Maneton', 'r = 76,2 MM · LA DEMI-COURSE'], es: ['Muñequilla', 'r = 76,2 MM · MEDIA CARRERA']}, + cPiston: {en: ['Piston', 'BORE 146 MM'], fr: ['Piston', 'ALÉSAGE 146 MM'], es: ['Pistón', 'DIÁMETRO 146 MM']}, + cPinRear: {en: ['Rear crankpin', 'ROW 1, 3, 5 …'], fr: ['Maneton arrière', 'RANGÉE 1, 3, 5 …'], es: ['Muñequilla trasera', 'FILA 1, 3, 5 …']}, + cPinFront: {en: ['Front crankpin', '180° AWAY'], fr: ['Maneton avant', 'À 180°'], es: ['Muñequilla delantera', 'A 180°']}, + cRows: {en: ['Two rows of nine', 'THE CRANK IS SPLIT AT THE PINS'], fr: ['Deux rangées de neuf', 'VILEBREQUIN EN PIÈCES AUX MANETONS'], es: ['Dos filas de nueve', 'CIGÜEÑAL PARTIDO EN LAS MUÑEQUILLAS']}, + cCam: {en: ['Cam ring', '4 LOBES · ⅛ CRANK SPEED, REVERSED'], fr: ['Anneau à cames', '4 LOBES · ⅛ DU RÉGIME, INVERSE'], es: ['Anillo de levas', '4 LÓBULOS · ⅛ DEL RÉGIMEN, INVERSO']}, + cTappet: {en: ['Tappet', 'RIDES THE LOBE'], fr: ['Poussoir', 'SUIT LE LOBE'], es: ['Taqué', 'SIGUE EL LÓBULO']}, + cRocker: {en: ['Rocker', 'IN ITS BOX ON THE HEAD'], fr: ['Culbuteur', 'DANS SA BOÎTE SUR LA CULASSE'], es: ['Balancín', 'EN SU CAJA SOBRE LA CULATA']}, + cValve: {en: ['Inlet valve', 'OPENS 20° BEFORE TOP CENTRE'], fr: ['Soupape d’admission', 'OUVRE 20° AVANT LE PMH'], es: ['Válvula de admisión', 'ABRE 20° ANTES DEL PMS']}, + cSuper: {en: ['Supercharger', '1 STAGE · 7.29 × CRANK'], fr: ['Compresseur', '1 ÉTAGE · 7,29 × LE RÉGIME'], es: ['Compresor', '1 ETAPA · 7,29 × EL RÉGIMEN']}, + cCarb: {en: ['Carburettor', 'PRESSURE TYPE'], fr: ['Carburateur', 'À INJECTION'], es: ['Carburador', 'DE PRESIÓN']}, + cGear: {en: ['Reduction gear', '0.45 : 1'], fr: ['Réducteur', '0,45 : 1'], es: ['Reductora', '0,45 : 1']}, + cStarter: {en: ['Starter', 'AT THE REAR'], fr: ['Démarreur', 'À L’ARRIÈRE'], es: ['Arranque', 'ATRÁS']}, + cOilPump: {en: ['Oil pump', 'DRY SUMP'], fr: ['Pompe à huile', 'CARTER SEC'], es: ['Bomba de aceite', 'CÁRTER SECO']}, + cBaffle: {en: ['Baffles', 'FORCE THE AIR THROUGH THE FINS'], fr: ['Déflecteurs', 'FORCENT L’AIR ENTRE LES AILETTES'], es: ['Deflectores', 'OBLIGAN AL AIRE A PASAR']}, + cCowl: {en: ['Cowling', 'NACA RING'], fr: ['Capot', 'ANNEAU NACA'], es: ['Capó', 'ANILLO NACA']}, + // ------------------------------------------------------------ the live page + tourOn: {en: 'AUTO TOUR · CLICK TO TAKE OVER', fr: 'VISITE AUTO · CLIQUER POUR PRENDRE LA MAIN', es: 'VISITA AUTOMÁTICA · CLIC PARA TOMAR EL CONTROL'}, + tourOff: {en: '▶ RESUME THE TOUR', fr: '▶ REPRENDRE LA VISITE', es: '▶ REANUDAR LA VISITA'}, + turnPhone: {en: 'Turn your phone sideways for the full console', fr: 'Tournez le téléphone pour la console complète', es: 'Gira el teléfono para ver la consola completa'}, + slowmo: {en: 'SLOW MOTION', fr: 'RALENTI', es: 'CÁMARA LENTA'}, + docTitle: {en: 'Radial · the R-2800 Double Wasp, taken apart', fr: 'Radial · le R-2800 Double Wasp, démonté', es: 'Radial · el R-2800 Double Wasp, desmontado'}, + footCredit: { + en: 'A C-series R-2800 after public sources, not affiliated with Pratt & Whitney', + fr: 'Un R-2800 de série C d’après les sources publiques, sans lien avec Pratt & Whitney', + es: 'Un R-2800 de la serie C según fuentes públicas, sin relación con Pratt & Whitney', + }, +}; + +/** the string for key in the page's language; extra arguments fill a templated one */ +export const T = makeT(S); +export const KEYS = Object.keys(S); +export const DICT = S; diff --git a/machines/radial/r2800-shared/live.js b/machines/radial/r2800-shared/live.js new file mode 100644 index 0000000..d659de6 --- /dev/null +++ b/machines/radial/r2800-shared/live.js @@ -0,0 +1,510 @@ +// Radial as a page you drive: the film's engine and overlay, run in real time. The starter, the magnetos and the +// throttle drive the one input (the crank angle, integrated from the engine speed each frame); slow motion, pause, +// the seven subsystems, the cutaways (glass, section, solid), four views, the cowling, orbit and zoom, H to hide the +// overlay. Left alone it plays the film's script as an auto tour with the operator's cursor, looped; a click, drag, +// wheel or key hands control to the visitor, with the engine as the tour left it; 25 s of quiet hands it back. +import {warmComposer} from 'teardown-kit/warm.js'; +import {CAMS, createConsole, CUTS, LAYERS, SUBS} from './console.js'; +import {CYL, FIRE, lift, ORDER, RATING, SPARK_ADV} from './engine.js'; +import {calloutsFor, CAM_CYL, camAt, CTX_OF, engineFrame, lookAtT, makeCursor, phaseOf, smoother, ss, SUB_OF, BTN_OF, VIEW_FN, blendLook, LOOK} from './film.js'; +import {loadFonts} from './fonts.js'; +import {airAt, camAtName, camSince, DURATION, lastSpark, rateAt, rpmAt, RUN, runAtTau, SCRIPT, starterAtTau, tauAt, thetaAt} from './schedule.js'; +import {createStage} from './stage.js'; +import {createChrome} from '../../../shared/chrome.js'; +import {LANG, T as tr} from './i18n.js'; + +const W = 1600; +const H = 900; +const IDLE = 25; +const D2R = Math.PI / 180; +const clamp = (x, a, b) => Math.min(b, Math.max(a, x)); +const wrap = (d) => ((((d + 180) % 360) + 360) % 360) - 180; +const RATES = [1, 1 / 4, 1 / 10, 1 / 25, 1 / 40]; +// what each subsystem button shows: its own parts solid, the case and the cylinders as ghosts, the rest hidden +const ALL = {case: 1, crank: 1, cyl: 1, valve: 1, ign: 1, air: 1, prop: 1, nose: 1, oil: 1, stand: 1, cowl: 0, baffle: 1}; +const ISO = { + crank: {case: 0.1, cyl: 0.12, valve: 0, ign: 0, air: 0, prop: 0.12, nose: 0.1, oil: 0, baffle: 0, stand: 0.5}, + cyl: {case: 0.5, crank: 0, valve: 0.35, ign: 0, air: 0.25, prop: 0.2, nose: 0.4, oil: 0, stand: 0.5}, + valve: {case: 0.12, cyl: 0.16, crank: 0, ign: 0, air: 0, prop: 0.1, nose: 0.1, oil: 0, baffle: 0, stand: 0.5}, + ign: {case: 0.5, cyl: 0.4, crank: 0, valve: 0.25, air: 0.15, prop: 0.25, nose: 0.5, oil: 0, baffle: 0, stand: 0.5}, + air: {case: 0.35, cyl: 0.35, crank: 0, valve: 0.15, ign: 0, air: 0.4, prop: 0.2, nose: 0.3, oil: 0, baffle: 0, stand: 0.5}, + prop: {case: 0.3, cyl: 0.3, crank: 0.4, valve: 0, ign: 0, air: 0.2, nose: 0.15, oil: 0, baffle: 0, stand: 0.5}, + oil: {case: 0.18, cyl: 0.12, crank: 0.4, valve: 0, ign: 0, air: 0.12, prop: 0.12, nose: 0.15, baffle: 0, stand: 0.5}, +}; +const CTX_SUB = {crank: 'law', cyl: 'cyl', valve: 'cam', ign: 'ign', air: 'air', prop: 'prop', oil: 'oil'}; +const PLANE = {face: 'rowcut', hero: 'profile', profile: 'profile', inside: 'inside'}; +const INSIDE_CYL = 2; + +const CSS = (top) => ` +html,body{margin:0;background:#e9eef1 linear-gradient(#e4ebf0,#edf0f0 55%,#f3ece1) fixed;overflow:hidden} +#app{position:absolute!important;inset:auto!important;left:0;top:0;width:${W}px;height:${H}px;transform-origin:0 0} +#gl{touch-action:none;cursor:grab} +#gl.drag{cursor:grabbing} +.tb{pointer-events:auto;cursor:pointer} +.tb:hover{filter:brightness(.93)} +.hit{position:absolute;pointer-events:auto;cursor:pointer} +.hit.ew{cursor:ew-resize} +.tourchip{position:absolute;left:800px;top:${30 + top}px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;height:24px;padding:0 12px;border:1.5px solid #2b2f34;background:rgba(246,243,234,.96);color:#22262b;font:700 12px 'Barlow Condensed',sans-serif;letter-spacing:1.3px;white-space:nowrap;cursor:pointer;pointer-events:auto} +.tourchip i{display:block;width:7px;height:7px;border-radius:50%;background:#0a8fe0} +.tourchip.on i{animation:blink 1.2s steps(2) infinite} +@keyframes blink{50%{opacity:.15}} +.turn{position:fixed;left:0;right:0;bottom:18px;text-align:center;font:700 13px/1.4 'Barlow Condensed',sans-serif;letter-spacing:1px;color:#777b80;text-transform:uppercase;display:none} +@media (orientation:portrait) and (max-width:820px){.turn{display:block}} +`; + +export async function runLive() { + const style = document.createElement('style'); + style.textContent = CSS(0); + document.head.appendChild(style); + document.title = tr('docTitle'); + document.documentElement.lang = LANG; + await loadFonts(); + const app = document.getElementById('app'); + const canvas = document.createElement('canvas'); + canvas.id = 'gl'; + app.appendChild(canvas); + const st = createStage({canvas}); + const ui = createConsole(app, {live: true}); + const tourCursor = makeCursor(ui); + + // ------------------------------------------------------------ quality tiers + const TIERS = [ + {samples: 8, ao: true, shadow: 4096, pr: 2}, + {samples: 4, ao: false, shadow: 2048, pr: 1.5}, + {samples: 2, ao: false, shadow: 1024, pr: 1}, + ]; + const light = matchMedia('(pointer: coarse)').matches || Math.min(innerWidth, innerHeight) < 700; + let tier = light ? 2 : 0; + let scale = 1; + const chrome = createChrome({slug: 'radial', name: 'Radial', credit: tr('footCredit')}); + const fit = () => { + const {top, bottom} = chrome.heights(); + const h = innerHeight - top - bottom; + scale = Math.min(innerWidth / W, h / H); + app.style.transform = `translate(${(innerWidth - W * scale) / 2}px, ${top + (h - H * scale) / 2}px) scale(${scale})`; + st.resize(W, H, clamp((devicePixelRatio || 1) * scale, 0.75, TIERS[tier].pr)); + }; + const applyTier = () => { + const {pr, ...q} = TIERS[tier]; + void pr; + st.setQuality(q); + fit(); + }; + applyTier(); + addEventListener('resize', fit); + const toStage = (cx, cy) => { + const r = app.getBoundingClientRect(); + return [(cx - r.left) / scale, (cy - r.top) / scale]; + }; + const tourChip = document.createElement('div'); + tourChip.className = 'tourchip'; + ui.root.appendChild(tourChip); + const note = document.createElement('div'); + note.className = 'turn'; + note.textContent = tr('turnPhone'); + document.body.appendChild(note); + + // ------------------------------------------------------------ the engine, live: θ integrated from N each frame + const E = {th: 6, N: 0, target: RATING.idle, ign: false, starter: false, run: 0, air: 0, sparks: CYL.map(() => null), n: 0}; + const hash = (n) => { + const x = Math.sin(n * 127.1 + 311.7) * 43758.5453; + return x - Math.floor(x); + }; + const stepEngine = (dtau, T) => { + const running = E.ign && E.run > 0.55; + if (E.starter && E.run >= 1) E.starter = false; + let want = 0; + let tc = 1.2; + if (running) { + want = E.target; + tc = want > E.N ? 0.9 : 1.1; + } else if (E.starter) { + want = RATING.crank; + tc = 0.35; + } + E.N += (want - E.N) * (1 - Math.exp(-dtau / tc)); + if (!running && !E.starter && E.N < 25) E.N = Math.max(0, E.N - 40 * dtau); + if (E.ign && E.N > 80) E.run = Math.min(1, E.run + dtau / 1.0); + if (!E.ign) E.run = Math.max(0, E.run - dtau / 0.4); + const th0 = E.th; + E.th += E.N * 6 * dtau; + E.air += (E.N / 60) * dtau * 0.2; + // the sparks this step crossed: each lights its charge with the engine's chance of catching + if (E.ign) { + const pCatch = 0.12 + 0.88 * smoother(E.run / 0.8); + for (const c of ORDER) { + const base = FIRE[c] - SPARK_ADV; + let m = Math.ceil((th0 - base) / 720); + for (let k = 0; k < 4; k++, m++) { + const ths = base + 720 * m; + if (ths > E.th) break; + if (ths <= th0) continue; + const f = (ths - th0) / Math.max(1e-9, E.th - th0); + E.sparks[c - 1] = {t: T - (1 - f) * frameDt, th: ths, lit: hash(m * 18 + ORDER.indexOf(c) + 7 + E.n * 0.0) < pCatch}; + } + } + } + }; + let frameDt = 1 / 60; + + // ------------------------------------------------------------ state + let T = 0; + let rateI = 3; + let paused = false; + let view = 'hero'; + let viewAt = 0; + let cut = 'solid'; + let sub = ''; + const layers = {cowl: false, callouts: true}; + const off = {az: 0, el: 0, k: 1}; + const cam = {...VIEW_FN.hero(0)}; + let ring = {t: -9, x: 0, y: 0}; + let hidden = false; + const visNow = {...ALL}; + const pulse = (x, y) => (ring = {t: T, x, y}); + const pulseBtn = (k) => pulse(...ui.spots[k]); + + // ------------------------------------------------------------ the tour + const AP = {on: true, t0: 0, loop: 0}; + let lastInput = 0; + const startTour = () => { + AP.on = true; + AP.t0 = T; + AP.loop = 0; + paused = false; + cut = 'solid'; + sub = ''; + layers.cowl = false; + layers.callouts = true; + Object.assign(off, {az: 0, el: 0, k: 1}); + }; + const takeOver = () => { + lastInput = T; + if (!AP.on) return; + AP.on = false; + const cyc = (T - AP.t0) % DURATION; + const name = camAtName(cyc); + view = {face: 'face', faceFull: 'face', rowcut: 'face', apart: 'hero', cam: 'hero', takeoff: 'profile', heroEnd: 'hero'}[name] || 'hero'; + viewAt = T - 10; + sub = {rowcut: 'crank', cam: 'valve'}[name] || ''; + cut = name === 'rowcut' ? 'section' : 'solid'; + for (const g of Object.keys(ALL)) visNow[g] = sub ? (ISO[sub][g] ?? 1) : ALL[g]; + // the engine carries on where the tour left it + const tau = tauAt(cyc); + Object.assign(E, {th: thetaAt(cyc), N: rpmAt(cyc), ign: tau >= RUN.ign, starter: starterAtTau(tau) > 0, run: runAtTau(tau), air: airAt(cyc)}); + E.target = clamp(Math.round(E.N / 50) * 50, RATING.idle, RATING.takeoff.rpm); + rateI = RATES.reduce((b, r, i) => (Math.abs(Math.log(r / rateAt(cyc))) < Math.abs(Math.log(RATES[b] / rateAt(cyc))) ? i : b), 0); + for (const cy of CYL) { + const s = lastSpark(cy.c, cyc); + E.sparks[cy.c - 1] = {t: T - (cyc - s.t), th: s.th, lit: s.lit}; + } + }; + tourChip.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + lastInput = T; + if (AP.on) takeOver(); + else startTour(); + }); + addEventListener('pointerdown', (e) => { + if (e.target !== tourChip) takeOver(); + }); + + // ------------------------------------------------------------ controls + const setView = (v) => { + view = v; + viewAt = T; + Object.assign(off, {az: 0, el: 0, k: 1}); + if (v === 'inside') cut = 'section'; + }; + const on = (k, fn) => + ui.btn[k].addEventListener('click', () => { + takeOver(); + pulseBtn(k); + fn(); + }); + for (const k of CAMS) on(k, () => setView(k)); + for (const k of CUTS) on(k, () => (cut = k)); + for (const k of SUBS) on(k, () => (sub = sub === k ? '' : k)); + for (const k of LAYERS) on(k, () => (layers[k] = !layers[k])); + on('pause', () => (paused = !paused)); + on('starter', () => { + if (E.run < 1) E.starter = !E.starter; + }); + on('ignition', () => (E.ign = !E.ign)); + on('slowmo', () => (rateI = (rateI + 1) % RATES.length)); + { + const {SL} = ui; + const d = document.createElement('div'); + d.className = 'hit ew'; + Object.assign(d.style, {left: `${SL.x - 8}px`, top: '840px', width: `${SL.w + 16}px`, height: '26px'}); + const apply = (e) => { + const [x] = toStage(e.clientX, e.clientY); + const k = clamp((x - SL.x) / SL.w, 0, 1); + E.target = Math.round((RATING.idle + k * (RATING.takeoff.rpm - RATING.idle)) / 50) * 50; + lastInput = T; + }; + d.addEventListener('pointerdown', (e) => { + takeOver(); + d.setPointerCapture(e.pointerId); + const up = () => { + removeEventListener('pointermove', apply); + removeEventListener('pointerup', up); + }; + addEventListener('pointermove', apply); + addEventListener('pointerup', up); + apply(e); + }); + ui.root.appendChild(d); + } + addEventListener('keydown', (e) => { + if (e.altKey || e.ctrlKey || e.metaKey) return; + const key = e.key.toLowerCase(); + const v = {1: 'face', 2: 'hero', 3: 'profile', 4: 'inside'}[key]; + takeOver(); + if (v) setView(v); + else if (key === ' ') paused = !paused; + else if (key === 'h') hidden = !hidden; + else if (key === 's') E.starter = E.run < 1 && !E.starter; + else if (key === 'm') E.ign = !E.ign; + else if (key === 'arrowleft') rateI = clamp(rateI + 1, 0, RATES.length - 1); + else if (key === 'arrowright') rateI = clamp(rateI - 1, 0, RATES.length - 1); + else if (key === 'arrowup') E.target = clamp(E.target + 100, RATING.idle, RATING.takeoff.rpm); + else if (key === 'arrowdown') E.target = clamp(E.target - 100, RATING.idle, RATING.takeoff.rpm); + else return; + e.preventDefault(); + }); + let drag = null; + canvas.addEventListener('pointerdown', (e) => { + drag = {x: e.clientX, y: e.clientY}; + canvas.setPointerCapture(e.pointerId); + canvas.classList.add('drag'); + }); + canvas.addEventListener('pointermove', (e) => { + if (!drag) return; + off.az += ((e.clientX - drag.x) / scale) * 0.3; + off.el = clamp(off.el + ((e.clientY - drag.y) / scale) * 0.2, -25, 60); + drag = {x: e.clientX, y: e.clientY}; + lastInput = T; + }); + const endDrag = () => { + drag = null; + canvas.classList.remove('drag'); + }; + canvas.addEventListener('pointerup', endDrag); + canvas.addEventListener('pointercancel', endDrag); + canvas.addEventListener( + 'wheel', + (e) => { + e.preventDefault(); + takeOver(); + off.k = clamp(off.k * Math.exp(e.deltaY * 0.0012), 0.35, 2.5); + }, + {passive: false}, + ); + + // ------------------------------------------------------------ the frame + startTour(); + let last = performance.now(); + const perf = {n: 0, sum: 0, slow: 0, age: 0}; + const frame = (now) => { + const dt = Math.min(0.1, Math.max(0, (now - last) / 1000)); + frameDt = dt; + last = now; + T += dt; + if (tier < TIERS.length - 1) { + perf.age += dt; + if (perf.age > 0.6) { + perf.sum += dt; + perf.n++; + if (perf.sum >= 0.5 && perf.n >= 6) { + perf.slow = perf.sum / perf.n > 0.022 ? perf.slow + 1 : 0; + perf.sum = 0; + perf.n = 0; + if (perf.slow >= (perf.age < 6 ? 1 : 2)) { + tier++; + applyTier(); + Object.assign(perf, {age: 0, slow: 0}); + } + } + } + } + + let th; + let N; + let run; + let rate; + let spark; + let tgt; + let cursor; + let fxLook; + let caption = ''; + let calloutView; + let since; + let phase; + let ctx; + let ctxArg; + let camBtn; + let camHi = null; + let starterOn; + let ignOn; + let air; + let thr; + if (AP.on) { + // the film, exactly: its run, its look, its camera + const c = T - AP.t0; + const loop = Math.floor(c / DURATION); + const cyc = c - loop * DURATION; + if (loop > AP.loop) AP.loop = loop; + th = thetaAt(cyc); + const tau = tauAt(cyc); + N = rpmAt(cyc); + run = runAtTau(tau); + rate = rateAt(cyc); + spark = (cc) => { + const s = lastSpark(cc, cyc); + return {t: T - (cyc - s.t), th: s.th, lit: s.lit}; + }; + const name = camAtName(cyc); + since = camSince(cyc); + fxLook = lookAtT(cyc); + tgt = camAt(cyc); + cursor = tourCursor(cyc); + if (AP.loop > 0 && cyc < 0.8) { + const end = tourCursor(DURATION - 0.01); + const k = ss(0, 0.8, cyc); + cursor = {...cursor, x: end.x + (cursor.x - end.x) * k, y: end.y + (cursor.y - end.y) * k}; + } + phase = phaseOf(tau); + caption = tr('cap:' + (name === 'hero' && phase !== 'stopped' ? phase : name)); + calloutView = name; + ctx = CTX_OF[name] || 'run'; + ctxArg = name === 'cam' ? CAM_CYL : name === 'rowcut' ? 'front' : undefined; + camBtn = BTN_OF[name]; + if (fxLook.focusK > 0.5) camHi = CYL.map((cy) => (cy.c === CAM_CYL ? {in: lift(cy.c, 'in', th), ex: lift(cy.c, 'ex', th)} : {in: 0, ex: 0})); + starterOn = starterAtTau(tau) > 0; + ignOn = tau >= RUN.ign; + air = airAt(cyc); + thr = N; + st.setCut(fxLook.cut ? 'section' : 'solid', fxLook.cut || 'profile'); + sub = SUB_OF[name] || ''; + if (name === 'hero' && cyc > 1.5) since = -1; + } else { + if (T - lastInput > IDLE) startTour(); + rate = paused ? 0 : RATES[rateI]; + stepEngine(dt * rate, T); + th = E.th; + N = E.N; + run = E.run; + spark = (cc) => E.sparks[cc - 1]; + since = T - viewAt; + // the look: the subsystem's, eased + const want = sub ? {...ALL, ...ISO[sub], [sub]: 1} : {...ALL}; + want.cowl = layers.cowl ? 1 : 0; + if (sub === 'prop') want.nose = 0.15; + const kk = 1 - Math.exp(-dt / 0.25); + for (const g of Object.keys(ALL)) visNow[g] += ((want[g] ?? 1) - visNow[g]) * kk; + fxLook = {vis: {...visNow}, apart: 0, hideRear: 0, focus: 0}; + tgt = VIEW_FN[view](since); + tgt.az += off.az; + tgt.el = clamp(tgt.el + off.el, -20, 85); + tgt.d *= off.k; + const rk = Math.max(0, 1 - (T - ring.t) / 0.55); + cursor = {x: -99, y: -99, press: false, ring: rk, ringX: ring.x, ringY: ring.y}; + phase = !E.ign && !E.starter && N < 1 ? 'stopped' : E.starter && E.run < 0.55 ? (E.ign ? 'ignition' : 'starter') : N > E.target + 60 ? 'back' : N < E.target - 60 ? 'climb' : N > 2500 ? 'takeoff' : 'idle'; + calloutView = view === 'hero' ? 'hero' : view === 'face' ? 'face' : ''; + ctx = sub ? CTX_SUB[sub] : N > 1500 ? 'takeoff' : 'run'; + ctxArg = sub === 'valve' ? INSIDE_CYL : sub === 'crank' ? 'front' : undefined; + camBtn = view; + if (sub === 'valve') camHi = CYL.map((cy) => ({in: lift(cy.c, 'in', th), ex: lift(cy.c, 'ex', th)})); + starterOn = E.starter; + ignOn = E.ign; + air = E.air; + thr = E.target; + if (cut === 'section') { + if (view === 'inside') { + const a = CYL[INSIDE_CYL - 1].angle * D2R; + st.planes.inside.normal.set(-Math.cos(a), -Math.sin(a), 0); + st.planes.inside.constant = 0; + } + st.setCut('section', PLANE[view] + (view === 'inside' ? '' : '')); + } else st.setCut('solid'); + } + const {s, lit, blur} = engineFrame({th, N, run, rate: Math.max(rate, 1e-4), spark, now: T}); + + // the camera eases toward its target + const k = 1 - Math.exp(-dt / (AP.on ? 0.1 : 0.35)); + cam.az += wrap(tgt.az - cam.az) * k; + for (const key of ['tx', 'ty', 'tz', 'el', 'sx', 'sy']) cam[key] += ((tgt[key] ?? 0) - (cam[key] ?? 0)) * k; + cam.fov = (cam.fov ?? 26) + ((tgt.fov ?? 26) - (cam.fov ?? 26)) * k; + cam.d = Math.exp(Math.log(cam.d) + (Math.log(tgt.d) - Math.log(cam.d)) * k); + const fx = { + th, + vis: fxLook.vis, + apart: fxLook.apart, + hideRear: fxLook.hideRear, + focus: fxLook.focus, + focusK: fxLook.focusK ?? 0, + glass: !AP.on && cut === 'glass', + glow: lit, + headGlow: lit.map((g) => g * 0.85 * (1 - (fxLook.focusK ?? 0))), + blur, + camHi, + air, + airK: !AP.on && sub === 'air' ? 1 : 0, + oil: th / 1440, + oilK: !AP.on && sub === 'oil' ? 1 : 0, + }; + st.frame(fx, {...cam, az: cam.az * D2R, el: cam.el * D2R}); + + ui.root.style.display = hidden ? 'none' : ''; + const callVis = layers.callouts && calloutView && since >= 0 ? ss(1.2, 2.0, since) : 0; + ui.update({ + ...s, + th, + lit, + rate: Math.max(rate, 1e-4), + phase, + starter: starterOn, + ignition: ignOn, + thrRpm: thr, + ctx, + ctxArg, + sub, + cut: AP.on ? (fxLook.cut ? 'section' : 'solid') : cut, + camBtn, + layers: {...layers}, + paused, + slowmo: rate < 0.98, + caption, + callouts: calloutView ? calloutsFor(calloutView, st, callVis) : [], + cursor, + }); + if (tourChip.classList.contains('on') !== AP.on || !tourChip.firstChild) { + tourChip.classList.toggle('on', AP.on); + tourChip.innerHTML = AP.on ? `${tr('tourOn')}` : tr('tourOff'); + } + if (!window.SIM_SHOWN) { + window.SIM_SHOWN = true; + dispatchEvent(new Event('simframe')); + } + requestAnimationFrame(frame); + }; + st.frame({th: 6, vis: ALL, glow: CYL.map(() => 0), headGlow: CYL.map(() => 0), blur: 0}, {...cam, az: cam.az * D2R, el: cam.el * D2R}); + warmComposer(st.renderer, st.composer, st.scene, st.camera).then(() => requestAnimationFrame(frame)); + window.LIVE = { + st, + cam, + E, + startTour, + takeOver, + get tier() { + return tier; + }, + get T() { + return T; + }, + }; + void blendLook; + void LOOK; + void SCRIPT; +} diff --git a/machines/radial/r2800-shared/make-timeline.mjs b/machines/radial/r2800-shared/make-timeline.mjs new file mode 100644 index 0000000..060702e --- /dev/null +++ b/machines/radial/r2800-shared/make-timeline.mjs @@ -0,0 +1,47 @@ +// Writes ../r2800-film/timeline.json (the beats, for review sheets and the score) and ../r2800-film/events.json +// (every spark of the film, lit or missed, and the engine's speed, slow motion, manifold pressure and firing rate on +// screen sampled at 100 Hz), all from the same schedule and model the film draws. +// node r2800-shared/make-timeline.mjs (from machines/radial) +import fs from 'node:fs'; +import path from 'node:path'; +import {fileURLToPath} from 'node:url'; +import {stateAt} from './engine.js'; +import {BEATS, DURATION, rateAt, rpmAt, RUN, runAtTau, SCRIPT, sparkList, tauAt, thetaAt} from './schedule.js'; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +const r = (x) => +x.toFixed(3); +// film time of a physical time (τ is monotone in t) +const tOfTau = (tau) => { + let lo = 0; + let hi = DURATION; + for (let k = 0; k < 50; k++) { + const mid = (lo + hi) / 2; + if (tauAt(mid) < tau) lo = mid; + else hi = mid; + } + return r((lo + hi) / 2); +}; +const beats = { + views: BEATS, + presses: SCRIPT.filter((e) => e.press).map((e) => e.t), + starter: tOfTau(RUN.starter), + ignition: tOfTau(RUN.ign), + disengage: tOfTau(RUN.disengage), + climb: tOfTau(RUN.climb), + full: tOfTau(RUN.climb + RUN.climbLen), + back: tOfTau(RUN.back), + idleAgain: tOfTau(RUN.back + RUN.backLen), +}; +fs.writeFileSync(path.join(HERE, '../r2800-film/timeline.json'), JSON.stringify({duration: DURATION, beats})); +const samples = []; +for (let i = 0; i <= DURATION * 100; i++) { + const t = i / 100; + const N = rpmAt(t); + const tau = tauAt(t); + const s = stateAt(N, runAtTau(tau)); + const rate = rateAt(t); + samples.push([r(N), r(rate), r(s.map), r(s.fireHz * rate * runAtTau(tau)), r(thetaAt(t))]); +} +const sparks = sparkList(); +fs.writeFileSync(path.join(HERE, '../r2800-film/events.json'), JSON.stringify({rate: 100, fields: ['rpm', 'slow', 'map', 'fireHzScreen', 'theta'], samples, sparks})); +console.log(beats, sparks.length, 'sparks', sparks.filter((s) => s[2]).length, 'lit'); diff --git a/machines/radial/r2800-shared/model.js b/machines/radial/r2800-shared/model.js new file mode 100644 index 0000000..a31986b --- /dev/null +++ b/machines/radial/r2800-shared/model.js @@ -0,0 +1,928 @@ +// The R-2800 itself, built from code in metres from the numbers in engine.js and against the reference photographs +// (REFERENCES.md): a grey-blue forged crankcase in three sections, 18 steel barrels under black finned muffs, raw +// aluminium heads with deep fins and two rocker boxes each, chromed pushrod tubes from two cam rings, two plugs per +// head on a braided harness ring, two magnetos on the nose, black intake pipes from the supercharger's diffuser, a +// two-throw crankshaft with a master rod and eight articulated rods per row, a planetary reduction gear, a three-blade +// propeller, a cowling and the black inter-cylinder baffles. update(fx) poses everything from the crank angle. +// +// World: the engine's axis is z (the propeller at +z), y up, the axis at the origin. An angle a measured clockwise +// from the top seen from the rear (engine.js) is a rotation of +a about z. +import * as THREE from 'three'; +import {mergeGeometries} from 'three/addons/utils/BufferGeometryUtils.js'; +import {CAM, CAM_PHASE, CYL, E, GEAR, lift, lobeOffset, PROP_D, ROWS, rowPose, VALVE} from './engine.js'; + +export const ACCENT = '#0a8fe0'; +const V3 = THREE.Vector3; +const D2R = Math.PI / 180; +const mm = (x) => x / 1000; +export const FLOOR_Y = -2.2; +const PROP_OFF = 0; // the blades' angle at θ = 0, chosen so frame 0 shows the cylinders between them + +// ------------------------------------------------------------ geometry helpers (millimetres in, metres out) +/** a lathed part around Y: profile [[r, y], ...] in mm */ +const lathe = (pts, seg = 40) => new THREE.LatheGeometry(pts.map(([r, y]) => new THREE.Vector2(mm(r), mm(y))), seg); +/** a lathed part around the engine axis z: profile [[r, z], ...] in mm */ +const latheZ = (pts, seg = 64) => lathe(pts, seg).rotateX(Math.PI / 2); +/** the same, its profile smoothed by a centripetal spline through the points (no facets at the knees) */ +const latheZs = (pts, seg = 72, n = 4) => { + const c = new THREE.SplineCurve(pts.map(([r, z]) => new THREE.Vector2(r, z))); + const out = c.getSpacedPoints(Math.max(8, pts.length * n)).map((v) => [Math.max(0, v.x), v.y]); + out[0] = pts[0]; + out[out.length - 1] = pts[pts.length - 1]; + return latheZ(out, seg); +}; +/** an annular fin: outer wall plus two flat faces, between y and y + t, from rIn to rOut (mm) */ +function finGeo(rIn, rOut, y, t, seg) { + const side = new THREE.CylinderGeometry(mm(rOut), mm(rOut), mm(t), seg, 1, true).translate(0, mm(y + t / 2), 0); + const top = new THREE.RingGeometry(mm(rIn), mm(rOut), seg, 1).rotateX(-Math.PI / 2).translate(0, mm(y + t), 0); + const bot = new THREE.RingGeometry(mm(rIn), mm(rOut), seg, 1).rotateX(Math.PI / 2).translate(0, mm(y), 0); + return [side, top, bot]; +} +const tube = (r, y0, y1, seg = 32, open = true) => new THREE.CylinderGeometry(mm(r), mm(r), mm(y1 - y0), seg, 1, open).translate(0, mm((y0 + y1) / 2), 0); +const merge = (list) => { + const g = mergeGeometries(list.map((x) => (x.index ? x.toNonIndexed() : x))); + g.computeBoundingSphere(); + return g; +}; +/** a gear disc in the XY plane (extruded along z): teeth, pitch radius, width, all mm */ +function gearGeo(teeth, rp, width, hole = 0) { + const m = (2 * rp) / teeth; + const ro = rp + m; + const rr = rp - 1.2 * m; + const sh = new THREE.Shape(); + for (let i = 0; i < teeth; i++) { + const a0 = (i / teeth) * Math.PI * 2; + const da = (Math.PI * 2) / teeth; + const pts = [ + [rr, a0], + [rr, a0 + da * 0.2], + [ro, a0 + da * 0.36], + [ro, a0 + da * 0.6], + [rr, a0 + da * 0.76], + ]; + pts.forEach(([r, a], k) => (i === 0 && k === 0 ? sh.moveTo(mm(r * Math.cos(a)), mm(r * Math.sin(a))) : sh.lineTo(mm(r * Math.cos(a)), mm(r * Math.sin(a))))); + } + sh.closePath(); + if (hole) { + const h = new THREE.Path(); + h.absarc(0, 0, mm(hole), 0, Math.PI * 2, true); + sh.holes.push(h); + } + const g = new THREE.ExtrudeGeometry(sh, {depth: mm(width), bevelEnabled: false, curveSegments: 2}); + g.translate(0, 0, -mm(width) / 2); + return g; +} +/** an internal (ring) gear: teeth pointing in */ +function ringGearGeo(teeth, rp, rOut, width) { + const m = (2 * rp) / teeth; + const ri = rp - m; + const rr = rp + 1.2 * m; + const sh = new THREE.Shape(); + sh.absarc(0, 0, mm(rOut), 0, Math.PI * 2, false); + const h = new THREE.Path(); + for (let i = 0; i < teeth; i++) { + const a0 = (i / teeth) * Math.PI * 2; + const da = (Math.PI * 2) / teeth; + const pts = [ + [rr, a0], + [rr, a0 + da * 0.2], + [ri, a0 + da * 0.36], + [ri, a0 + da * 0.6], + [rr, a0 + da * 0.76], + ]; + pts.forEach(([r, a], k) => (i === 0 && k === 0 ? h.moveTo(mm(r * Math.cos(a)), mm(r * Math.sin(a))) : h.lineTo(mm(r * Math.cos(a)), mm(r * Math.sin(a))))); + } + h.closePath(); + sh.holes.push(h); + const g = new THREE.ExtrudeGeometry(sh, {depth: mm(width), bevelEnabled: false, curveSegments: 24}); + g.translate(0, 0, -mm(width) / 2); + return g; +} +/** a cam track: base circle plus 4 lobes at the given ring angles (degrees clockwise from the rear), in XY */ +function camTrackGeo(phase, half, base, rise, width) { + const sh = new THREE.Shape(); + const N = 360; + for (let i = 0; i <= N; i++) { + const b = (i / N) * 360; // ring angle, clockwise from the top seen from the rear + const x = (((b - phase) % 90) + 90 + 45) % 90 - 45; + const u = Math.abs(x) / half; + const r = base + (u >= 1 ? 0 : rise * (0.5 + 0.5 * Math.cos(Math.PI * u))); + const px = -Math.sin(b * D2R) * r; + const py = Math.cos(b * D2R) * r; + if (i === 0) sh.moveTo(mm(px), mm(py)); + else sh.lineTo(mm(px), mm(py)); + } + const h = new THREE.Path(); + h.absarc(0, 0, mm(base - 16), 0, Math.PI * 2, true); + sh.holes.push(h); + const g = new THREE.ExtrudeGeometry(sh, {depth: mm(width), bevelEnabled: false, curveSegments: 48}); + g.translate(0, 0, -mm(width) / 2); + return g; +} +const curveTube = (pts, r, seg = 48, rs = 10) => new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts.map((p) => new V3(mm(p[0]), mm(p[1]), mm(p[2])))), seg, mm(r), rs, false); +/** a point given by its engine angle (clockwise from the top seen from the rear), radius and z (mm) */ +const polar = (a, r, z) => [-Math.sin(a * D2R) * r, Math.cos(a * D2R) * r, z]; + +// ------------------------------------------------------------ textures from code +function braidTexture() { + const c = document.createElement('canvas'); + c.width = 64; + c.height = 16; + const g = c.getContext('2d'); + g.fillStyle = '#8f918c'; + g.fillRect(0, 0, 64, 16); + for (let x = -16; x < 80; x += 4) { + g.strokeStyle = x % 8 ? '#6c6e69' : '#b4b5b0'; + g.lineWidth = 1.6; + g.beginPath(); + g.moveTo(x, 0); + g.lineTo(x + 16, 16); + g.stroke(); + g.beginPath(); + g.moveTo(x + 16, 0); + g.lineTo(x, 16); + g.stroke(); + } + const t = new THREE.CanvasTexture(c); + t.wrapS = t.wrapT = THREE.RepeatWrapping; + t.repeat.set(40, 1); + t.colorSpace = THREE.SRGBColorSpace; + return t; +} +function blurTexture() { + const c = document.createElement('canvas'); + c.width = 256; + c.height = 4; + const g = c.getContext('2d'); + const gr = g.createLinearGradient(0, 0, 256, 0); + gr.addColorStop(0, 'rgba(24,24,24,0.0)'); + gr.addColorStop(0.08, 'rgba(24,24,24,0.55)'); + gr.addColorStop(0.5, 'rgba(26,26,26,0.42)'); + gr.addColorStop(0.9, 'rgba(30,30,30,0.3)'); + gr.addColorStop(0.94, 'rgba(214,170,40,0.55)'); + gr.addColorStop(1, 'rgba(214,170,40,0.0)'); + g.fillStyle = gr; + g.fillRect(0, 0, 256, 4); + const t = new THREE.CanvasTexture(c); + t.colorSpace = THREE.SRGBColorSpace; + return t; +} + +export function buildEngine() { + const root = new THREE.Group(); + const CLIP = [new THREE.Plane(new V3(0, 0, -1), 0)]; + const M = { + fins: new THREE.MeshStandardMaterial({color: '#18191b', roughness: 0.62, metalness: 0.35, side: THREE.DoubleSide}), + case: new THREE.MeshStandardMaterial({color: '#6b7884', roughness: 0.55, metalness: 0.35, side: THREE.DoubleSide}), + caseDark: new THREE.MeshStandardMaterial({color: '#56616b', roughness: 0.58, metalness: 0.35, side: THREE.DoubleSide}), + alu: new THREE.MeshStandardMaterial({color: '#a3a7ab', roughness: 0.5, metalness: 0.8, side: THREE.DoubleSide}), + chrome: new THREE.MeshStandardMaterial({color: '#aeb2b7', roughness: 0.42, metalness: 1, envMapIntensity: 0.55}), + steel: new THREE.MeshStandardMaterial({color: '#a7acb2', roughness: 0.42, metalness: 0.95, side: THREE.DoubleSide}), + steelDark: new THREE.MeshStandardMaterial({color: '#6e7277', roughness: 0.48, metalness: 0.9, side: THREE.DoubleSide}), + piston: new THREE.MeshStandardMaterial({color: '#c9ccd0', roughness: 0.45, metalness: 0.8, side: THREE.DoubleSide}), + black: new THREE.MeshStandardMaterial({color: '#1e2022', roughness: 0.62, metalness: 0.25, side: THREE.DoubleSide}), + exhaust: new THREE.MeshStandardMaterial({color: '#4a3f37', roughness: 0.75, metalness: 0.5}), + braid: new THREE.MeshStandardMaterial({color: '#9a9b96', roughness: 0.55, metalness: 0.7, map: braidTexture()}), + hub: new THREE.MeshStandardMaterial({color: '#3b3e42', roughness: 0.48, metalness: 0.7}), + plug: new THREE.MeshStandardMaterial({color: '#8c8f93', roughness: 0.45, metalness: 0.9}), + stand: new THREE.MeshStandardMaterial({color: '#55585b', roughness: 0.6, metalness: 0.5}), + cowl: new THREE.MeshStandardMaterial({color: '#959ba1', roughness: 0.5, metalness: 0.55, side: THREE.DoubleSide, envMapIntensity: 0.6}), + blade: new THREE.MeshStandardMaterial({color: '#ffffff', roughness: 0.62, metalness: 0.2, vertexColors: true, side: THREE.DoubleSide}), + oil: new THREE.MeshStandardMaterial({color: '#8a6a3a', roughness: 0.5, metalness: 0.6, emissive: '#c58a2a', emissiveIntensity: 0}), + glass: new THREE.MeshPhysicalMaterial({color: '#e9eef2', roughness: 0.1, metalness: 0, transparent: true, opacity: 0.13, depthWrite: false, side: THREE.DoubleSide}), + flame: new THREE.MeshBasicMaterial({color: ACCENT, transparent: true, opacity: 0, depthWrite: false, side: THREE.DoubleSide}), + accent: new THREE.MeshBasicMaterial({color: ACCENT}), + blur: new THREE.MeshBasicMaterial({color: '#2a2b2c', transparent: true, opacity: 0, depthWrite: false, side: THREE.DoubleSide}), + blurTip: new THREE.MeshBasicMaterial({color: '#c99a1e', transparent: true, opacity: 0, depthWrite: false, side: THREE.DoubleSide}), + }; + // every lit material can be cut by the section plane + for (const k of Object.keys(M)) M[k].clipShadows = true; + + // groups: what each subsystem button isolates + const GROUPS = ['case', 'crank', 'cyl', 'valve', 'ign', 'air', 'prop', 'nose', 'oil', 'stand', 'cowl', 'baffle']; + const parts = Object.fromEntries(GROUPS.map((g) => [g, []])); + const add = (parent, geo, mat, group, opts = {}) => { + const m = new THREE.Mesh(geo, mat); + m.castShadow = opts.cast ?? true; + m.receiveShadow = opts.receive ?? true; + m.userData = {group, mat, glassable: !!opts.glassable, nocut: !!opts.nocut}; + parent.add(m); + parts[group].push(m); + return m; + }; + + // per-row assemblies (they slide apart along the axis in the "rows apart" view) + const rowG = {rear: new THREE.Group(), front: new THREE.Group()}; + root.add(rowG.rear, rowG.front); + + // ------------------------------------------------------------ the power section crankcase + const caseGeo = latheZ([ + [0, -232], + [236, -232], + [252, -214], + [258, -150], + [262, -105], + [258, -60], + [250, 0], + [258, 60], + [262, 105], + [258, 150], + [252, 214], + [246, 250], + [0, 250], + ]); + add(root, caseGeo, M.case, 'case', {glassable: true}); + // the cylinder pads, one boss per cylinder + const padGeo = tube(112, 236, 262, 36, false); + for (const cy of CYL) { + const p = add(rowG[cy.row], padGeo, M.caseDark, 'case', {glassable: true}); + p.rotation.z = cy.angle * D2R; + p.position.z = mm(E.rowZ[cy.row]); + p.rotation.order = 'ZYX'; + } + + // ------------------------------------------------------------ cylinders + const barrelGeo = (() => { + const g = [tube(84, 262, 300), tube(73, 236, 470), tube(84, 438, 448)]; + g.push(...finGeo(84, 99, 254, 10, 40)); + for (let y = 302; y < 432; y += 5.6) g.push(...finGeo(84, 102, y, 1.8, 40)); + return merge(g); + })(); + const headGeo = (() => { + const g = [lathe([[86, 440], [88, 470], [86, 540], [70, 580], [40, 598], [0, 604]], 40)]; + for (let y = 452, i = 0; y < 570; y += 6.6, i++) { + const k = (y - 452) / 118; + g.push(...finGeo(84 - 22 * k * k, 112 - 26 * k * k, y, 2.4, 40)); + } + // the combustion chamber's roof, seen in section + g.push(lathe([[73, 470], [70, 478], [52, 492], [0, 500]], 36)); + return merge(g); + })(); + // rocker boxes: one over each valve, their covers at the top + const boxGeo = merge([new THREE.CapsuleGeometry(mm(24), mm(62), 6, 16).rotateX(Math.PI / 2), new THREE.CylinderGeometry(mm(29), mm(29), mm(8), 20).translate(0, mm(16), mm(-18))]); + const portGeo = new THREE.CylinderGeometry(mm(34), mm(38), mm(60), 20).rotateX(Math.PI / 2); + const exGeo = curveTube([[0, 512, 92], [0, 520, 128], [0, 540, 158]], 22, 12, 12); + const plugGeo = merge([new THREE.CylinderGeometry(mm(10), mm(10), mm(44), 12).rotateX(Math.PI / 2), new THREE.CylinderGeometry(mm(14), mm(14), mm(12), 6).rotateX(Math.PI / 2).translate(0, 0, mm(-14))]); + const flameGeo = lathe([[70, 436], [72, 468], [52, 490], [0, 498]], 32); + const cylinders = CYL.map((cy) => { + const g = new THREE.Group(); + g.rotation.z = cy.angle * D2R; + g.position.z = mm(E.rowZ[cy.row]); + rowG[cy.row].add(g); + add(g, barrelGeo, M.fins, 'cyl', {glassable: true}); + const headMat = M.alu.clone(); + headMat.clipShadows = true; + headMat.emissive = new THREE.Color(ACCENT); + headMat.emissiveIntensity = 0; + const head = add(g, headGeo, headMat, 'cyl', {glassable: true}); + head.userData.ownMat = true; + head.userData.mat = headMat; + const flame = add(g, flameGeo, M.flame.clone(), 'cyl', {cast: false, receive: false}); + flame.userData.isFlame = true; + flame.renderOrder = 2; + // the cam side: the front row's ring is in front of it, the rear row's behind + const side = cy.row === 'front' ? 1 : -1; + for (const s of [-1, 1]) { + const b = add(g, boxGeo, M.alu, 'cyl'); + b.position.set(0, mm(592), mm(60 * s)); + b.rotation.x = -0.32 * s; + } + add(g, portGeo, M.alu, 'cyl').position.set(0, mm(522), mm(-100)); + const ex = add(g, exGeo, M.exhaust, 'cyl'); + if (cy.row === 'rear') ex.scale.z = 0.55; + for (const s of [-1, 1]) { + const p = add(g, plugGeo, M.plug, 'ign'); + p.position.set(mm(s * 30), mm(476), mm(110 * s)); + p.rotation.y = s * 0.25; + } + return {cy, g, head, flame, side}; + }); + + // ------------------------------------------------------------ the valve train: two cam rings, tappets, pushrods, rockers, valves + const camRings = {}; + for (const row of ['rear', 'front']) { + const side = row === 'front' ? 1 : -1; + const z = E.rowZ[row] + side * 125; + const g = new THREE.Group(); + g.position.z = mm(z); + rowG[row].add(g); + const half = {in: (VALVE.in[1] - VALVE.in[0]) / 16, ex: (VALVE.ex[1] - VALVE.ex[0]) / 16}; + const tin = add(g, camTrackGeo(CAM_PHASE[row].in, half.in, 140, 12, 12), M.steel, 'valve'); + tin.position.z = mm(-8); + const tex = add(g, camTrackGeo(CAM_PHASE[row].ex, half.ex, 140, 12, 12), M.steel, 'valve'); + tex.position.z = mm(8); + add(g, tube(120, -14, 14, 48, false).rotateX(Math.PI / 2), M.steelDark, 'valve'); + camRings[row] = g; + } + const tappetGeo = merge([tube(9, 0, 96, 12, false), new THREE.CylinderGeometry(mm(12), mm(12), mm(10), 14).rotateZ(Math.PI / 2)]); + const rodGeo = (a, b) => curveTube([a, [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2], b], 7.5, 8, 10); + // the pushrod tubes: the near valve goes straight up the cam side, the far one around the barrel + const nearTube = curveTube([[18, 262, 125], [18, 420, 124], [18, 566, 116]], 7.5, 24, 10); + const farTube = curveTube([[-24, 262, 125], [-92, 340, 86], [-114, 440, 0], [-92, 528, -84], [-24, 566, -116]], 7.5, 48, 10); + const valveGeo = merge([tube(4.5, 470, 580, 10, false), lathe([[0, 462], [27, 462], [27, 466], [10, 474], [4.5, 486]], 24)]); + const rockerGeo = merge([new THREE.BoxGeometry(mm(12), mm(10), mm(96)).translate(0, 0, mm(10)), new THREE.CylinderGeometry(mm(9), mm(9), mm(22), 12).rotateZ(Math.PI / 2)]); + const train = cylinders.map((C) => { + const {g, side} = C; + const out = {}; + for (const ev of ['in', 'ex']) { + // the inlet valve is at the rear of the head, the exhaust at the front + const vs = ev === 'in' ? -1 : 1; + const near = vs === side; + const tz = side * 125 + (ev === 'in' ? -8 : 8); + const tp = add(g, tappetGeo, M.steel, 'valve'); + tp.position.set(mm(near ? 18 : -18), mm(152), mm(tz)); + const tb = add(g, near ? nearTube : farTube, M.chrome, 'valve', {glassable: true}); + if (side < 0) tb.scale.z = -1; + const v = add(g, valveGeo, M.steel, 'valve'); + v.position.z = mm(34 * vs); + v.rotation.x = 0; + const rk = add(g, rockerGeo, M.steel, 'valve'); + rk.position.set(0, mm(590), mm(70 * vs)); + rk.scale.z = vs; + out[ev] = {tp, tb, v, rk, near}; + } + return out; + }); + + // every part that belongs to one cylinder knows which (the cam view shows one cylinder's train); its tappet stays + for (const C of cylinders) C.g.traverse((o) => o.isMesh && (o.userData.cyl = C.cy.c)); + for (const tr of train) for (const ev of ['in', 'ex']) tr[ev].tp.userData.keep = true; + + // ------------------------------------------------------------ the crankshaft: two throws at 180°, two halves + const crank = {}; + const webGeo = (() => { + const sh = new THREE.Shape(); + const R = 128; + sh.moveTo(mm(-R * Math.sin(1.1)), mm(-R * Math.cos(1.1))); + sh.absarc(0, 0, mm(R), -Math.PI / 2 - 1.1, -Math.PI / 2 + 1.1, false); + sh.lineTo(mm(52), mm(20)); + sh.absarc(0, mm(E.r), mm(54), 0, Math.PI, false); + sh.lineTo(mm(-52), mm(20)); + sh.closePath(); + const g = new THREE.ExtrudeGeometry(sh, {depth: mm(26), bevelEnabled: true, bevelThickness: mm(2), bevelSize: mm(2), bevelSegments: 1, curveSegments: 20}); + g.translate(0, 0, -mm(13)); + return g; + })(); + for (const row of ['rear', 'front']) { + const g = new THREE.Group(); + g.position.z = mm(E.rowZ[row]); + rowG[row].add(g); + const sign = row === 'rear' ? 1 : -1; // the front pin is 180° from the rear one + const inner = row === 'rear' ? 1 : -1; // toward the centre of the engine + for (const dz of [-44, 44]) { + const w = add(g, webGeo, M.steel, 'crank'); + w.position.z = mm(dz); + if (sign < 0) w.rotation.z = Math.PI; + } + add(g, tube(46, -32, 32, 32, false).rotateX(Math.PI / 2).translate(0, mm(E.r * sign), 0), M.steel, 'crank'); + // main journals: outward to the end bearing, inward to the centre one + add(g, tube(50, 0, 160, 32, false).rotateX(Math.PI / 2).translate(0, 0, mm(-inner * 130)), M.steel, 'crank'); + add(g, tube(50, -inner * 60, -inner * 4, 32, false).rotateX(Math.PI / 2).translate(0, 0, mm(inner * 60 + (inner > 0 ? 0 : 0))), M.steel, 'crank'); + // the oil drilling, through the journal and out to the crankpin + add(g, curveTube([[0, 0, -inner * 150], [0, 0, -inner * 40], [0, E.r * sign * 0.5, 0], [0, E.r * sign, 0]], 7, 24, 8), M.oil, 'oil', {cast: false}); + crank[row] = g; + } + // the centre main bearing + add(root, tube(58, -16, 16, 36, false).rotateX(Math.PI / 2), M.steelDark, 'crank'); + + // ------------------------------------------------------------ rods and pistons + const pistonGeo = (() => { + const g = [tube(72.5, -50, 66, 40, false), new THREE.CircleGeometry(mm(72.5), 40).rotateX(-Math.PI / 2).translate(0, mm(66), 0)]; + for (const y of [40, 48, 56]) g.push(tube(73.2, y, y + 2.2, 40, false)); + return merge(g); + })(); + const pinGeo = new THREE.CylinderGeometry(mm(16), mm(16), mm(128), 16).rotateZ(Math.PI / 2); + const masterGeo = (() => { + const sh = new THREE.Shape(); + sh.absarc(0, 0, mm(88), 0, Math.PI * 2, false); + const h = new THREE.Path(); + h.absarc(0, 0, mm(47), 0, Math.PI * 2, true); + sh.holes.push(h); + const flange = new THREE.ExtrudeGeometry(sh, {depth: mm(52), bevelEnabled: false, curveSegments: 40}).translate(0, 0, -mm(26)); + const shank = new THREE.BoxGeometry(mm(34), mm(E.L - 110), mm(30)).translate(0, mm(80 + (E.L - 110) / 2 - 10), 0); + const eye = new THREE.CylinderGeometry(mm(26), mm(26), mm(34), 20).rotateX(Math.PI / 2).translate(0, mm(E.L), 0); + return merge([flange, shank, eye]); + })(); + const knuckleGeo = new THREE.CylinderGeometry(mm(11), mm(11), mm(60), 14).rotateX(Math.PI / 2); + const artGeo = merge([ + new THREE.BoxGeometry(mm(22), mm(E.l - 40), mm(18)).translate(0, mm(E.l / 2), 0), + new THREE.CylinderGeometry(mm(18), mm(18), mm(22), 16).rotateX(Math.PI / 2), + new THREE.CylinderGeometry(mm(22), mm(22), mm(26), 16).rotateX(Math.PI / 2).translate(0, mm(E.l), 0), + ]); + const rods = {}; + for (const row of ['rear', 'front']) { + const m = E.master[row]; + const mg = add(rowG[row], masterGeo, M.steel, 'crank'); + const knuckles = []; + for (const cy of ROWS[row]) { + if (cy.c === m) continue; + const k = add(mg, knuckleGeo, M.steelDark, 'crank'); + const d = (cy.angle - CYL[m - 1].angle) * D2R; + k.position.set(-Math.sin(d) * mm(E.rk), Math.cos(d) * mm(E.rk), 0); + knuckles.push(k); + } + const arts = {}; + for (const cy of ROWS[row]) if (cy.c !== m) arts[cy.c] = add(rowG[row], artGeo, M.steel, 'crank'); + rods[row] = {master: mg, arts}; + } + const pistons = CYL.map((cy) => { + const p = add(cylinders[cy.c - 1].g, pistonGeo, M.piston, 'crank'); + add(p, pinGeo, M.steelDark, 'crank'); + return p; + }); + + // ------------------------------------------------------------ the nose: reduction gear, magnetos, harness, propeller + add( + root, + latheZs([ + [246, 250], + [282, 282], + [300, 330], + [292, 400], + [252, 470], + [205, 540], + [165, 598], + [128, 640], + [0, 652], + ]), + M.case, + 'nose', + {glassable: true}, + ); + const gearG = new THREE.Group(); + gearG.position.z = mm(380); + root.add(gearG); + const RG = {sun: 72, ring: 88, module: 3.4}; // 72 / (72 + 88) = 0.45 [E: the layout] + const rpS = (RG.sun * RG.module) / 2; + const rpR = (RG.ring * RG.module) / 2; + const rpP = (rpR - rpS) / 2; + const sun = add(gearG, gearGeo(RG.sun, rpS, 34, 30), M.steel, 'prop'); + add(gearG, ringGearGeo(RG.ring, rpR, rpR + 16, 34), M.steelDark, 'prop'); + const carrier = new THREE.Group(); + gearG.add(carrier); + add(carrier, new THREE.CylinderGeometry(mm(rpR - 4), mm(rpR - 4), mm(10), 48).rotateX(Math.PI / 2).translate(0, 0, mm(26)), M.steelDark, 'prop'); + const planets = []; + for (let i = 0; i < 6; i++) { + const pg = add(carrier, gearGeo(8, rpP, 34, 0), M.steel, 'prop'); + const a = (i / 6) * Math.PI * 2; + pg.position.set(Math.cos(a) * mm(rpS + rpP), Math.sin(a) * mm(rpS + rpP), 0); + planets.push(pg); + } + // the propeller shaft (splined) and hub: they turn with the carrier + const propG = new THREE.Group(); + root.add(propG); + add(propG, tube(62, 600, 760, 32, false).rotateX(Math.PI / 2), M.steel, 'prop'); + add(propG, latheZs([[0, 720], [132, 722], [140, 760], [130, 830], [100, 880], [50, 905], [0, 910]], 48), M.hub, 'prop'); + const bladeGeo = (() => { + const R = PROP_D * 500; + const rows = 28; + const cols = 14; + const pos = []; + const col = []; + const idx = []; + const tipY = new THREE.Color('#d8a925'); + const blk = new THREE.Color('#1b1c1d'); + for (let i = 0; i <= rows; i++) { + const u = i / rows; + const r = 150 + (R - 150) * u; + const chord = u < 0.1 ? 120 + 1300 * u : 250 * (1 - 0.45 * Math.max(0, (u - 0.3) / 0.7) ** 1.4) + (u > 0.97 ? -1500 * (u - 0.97) : 0); + const thick = 60 * (1 - u) + 7; + const tw = (52 - 40 * u) * D2R; + const cc = (r > R - 120 ? tipY : blk).clone(); + for (let j = 0; j < cols; j++) { + const a = (j / cols) * Math.PI * 2; + const x = (Math.cos(a) * chord) / 2; + const z = (Math.sin(a) * thick) / 2; + pos.push(mm(x * Math.cos(tw) - z * Math.sin(tw)), mm(r), mm(x * Math.sin(tw) + z * Math.cos(tw))); + col.push(cc.r, cc.g, cc.b); + } + } + for (let i = 0; i < rows; i++) + for (let j = 0; j < cols; j++) { + const a = i * cols + j; + const b = i * cols + ((j + 1) % cols); + idx.push(a, b, a + cols, b, b + cols, a + cols); + } + const g = new THREE.BufferGeometry(); + g.setAttribute('position', new THREE.Float32BufferAttribute(pos, 3)); + g.setAttribute('color', new THREE.Float32BufferAttribute(col, 3)); + g.setIndex(idx); + g.computeVertexNormals(); + return g; + })(); + const blades = []; + for (let i = 0; i < 3; i++) { + const b = add(propG, bladeGeo, M.blade, 'prop'); + b.rotation.z = (i * 2 * Math.PI) / 3; + b.position.z = mm(790); + blades.push(b); + } + const blurDisc = add(root, new THREE.RingGeometry(mm(150), mm(PROP_D * 500 - 120), 96, 1), M.blur, 'prop', {cast: false, receive: false}); + const blurTip = add(blurDisc, new THREE.RingGeometry(mm(PROP_D * 500 - 120), mm(PROP_D * 500), 96, 1), M.blurTip, 'prop', {cast: false, receive: false}); + blurDisc.position.z = mm(790); + blurDisc.renderOrder = 3; + // two magnetos on the nose, their distributors turning at half crank speed + const magnetos = []; + for (const a of [-38, 38]) { + const g = new THREE.Group(); + const [x, y] = polar(a, 300, 0); + g.position.set(mm(x), mm(y), mm(360)); + g.rotation.z = a * D2R; + root.add(g); + add(g, new THREE.BoxGeometry(mm(92), mm(96), mm(128)).translate(0, mm(34), 0), M.caseDark, 'ign'); + const cap = add(g, new THREE.CylinderGeometry(mm(42), mm(46), mm(30), 24).translate(0, mm(96), 0), M.black, 'ign'); + const rotor = add(g, new THREE.BoxGeometry(mm(60), mm(6), mm(10)).translate(mm(16), mm(114), 0), M.steel, 'ign'); + void cap; + magnetos.push({g, rotor}); + } + // the harness ring and its 36 leads + add(root, new THREE.TorusGeometry(mm(302), mm(15), 12, 96), M.braid, 'ign').position.z = mm(268); + const plugAt = (cy, s) => { + // a plug's tip in world mm: s +1 front plug, -1 rear plug + const a = cy.angle; + const local = [30 * s, 476, 110 * s + 22 * s]; + const r = local[1]; + const t = (local[0] * Math.PI) / 180 / 4.76; // small tangential offset as an angle + void t; + const ang = a - (local[0] / r) * (180 / Math.PI); + return polar(ang, r, E.rowZ[cy.row] + local[2]); + }; + for (const cy of CYL) { + for (const s of [1, -1]) { + const p = plugAt(cy, s); + const a0 = cy.angle + (cy.row === 'front' ? 0 : 0); + const start = polar(a0, 302, 268); + let path; + if (cy.row === 'front' && s > 0) path = [start, polar(a0, 380, 262), polar(a0 - 3, 455, 245), p]; + else if (cy.row === 'front') path = [start, polar(a0 - 14, 360, 250), polar(a0 - 17, 440, 120), polar(a0 - 14, 470, 20), p]; + else if (s > 0) path = [start, polar(a0, 340, 240), polar(a0, 420, 130), polar(a0 - 3, 466, 30), p]; + else path = [start, polar(a0, 340, 240), polar(a0, 420, 130), polar(a0 - 13, 470, -60), polar(a0 - 9, 474, -180), p]; + add(root, curveTube(path, 5, 40, 6), M.braid, 'ign', {cast: false}); + } + } + + // ------------------------------------------------------------ the rear: supercharger, diffuser, 18 intake pipes, carburettor, accessories + add( + root, + latheZs([ + [0, -232], + [252, -232], + [318, -268], + [336, -300], + [330, -340], + [282, -400], + [272, -430], + [262, -520], + [248, -760], + [238, -1000], + [228, -1180], + [150, -1240], + [0, -1244], + ]), + M.case, + 'air', + {glassable: true}, + ); + const impG = new THREE.Group(); + impG.position.z = mm(-312); + root.add(impG); + add(impG, latheZ([[0, -26], [40, -26], [140, 10], [140, 16], [0, 16]], 40), M.alu, 'air'); + const vane = new THREE.BoxGeometry(mm(4), mm(98), mm(34)).translate(0, mm(90), 0); + for (let i = 0; i < 18; i++) { + const v = add(impG, vane, M.alu, 'air'); + v.rotation.z = (i / 18) * Math.PI * 2; + } + // the pipes: from the diffuser's outlets to each cylinder's inlet port + const pipeCurves = []; + for (const cy of CYL) { + const zr = E.rowZ[cy.row]; + const a = cy.angle; + const pts = [polar(a, 318, -300), polar(a, 400, -310), polar(a, 492, cy.row === 'front' ? -150 : zr - 175), polar(a, 522, zr - 128)]; + const c = new THREE.CatmullRomCurve3(pts.map((p) => new V3(mm(p[0]), mm(p[1]), mm(p[2])))); + pipeCurves.push(c); + add(root, new THREE.TubeGeometry(c, 40, mm(34), 14, false), M.black, 'air', {glassable: true}); + } + // carburettor on top of the rear case, the air scoop's throat + add(root, new THREE.BoxGeometry(mm(240), mm(150), mm(260)).translate(0, mm(330), mm(-560)), M.black, 'air'); + add(root, new THREE.BoxGeometry(mm(200), mm(60), mm(220)).translate(0, mm(430), mm(-560)), M.caseDark, 'air'); + // the starter at the very rear, a generator and pumps on their pads + add(root, latheZ([[0, -1244], [96, -1244], [100, -1300], [92, -1420], [60, -1450], [0, -1452]], 32), M.black, 'case'); + for (const [a, r, len] of [[120, 160, 230], [240, 160, 230], [180, 170, 180]]) { + const [x, y] = polar(a, r, 0); + add(root, new THREE.CylinderGeometry(mm(64), mm(64), mm(len), 24).rotateX(Math.PI / 2).translate(mm(x), mm(y), mm(-1240 - len / 2 + 30)), M.caseDark, 'case'); + } + // the oil system: pressure pump low at the rear, its line to the rear main bearing, the scavenge sump, the nose feed + add(root, new THREE.BoxGeometry(mm(150), mm(120), mm(170)).translate(0, mm(-250), mm(-760)), M.caseDark, 'oil'); + const oilLines = [ + [[0, -250, -680], [0, -238, -480], [0, -120, -300], [0, -40, -240]], + [[60, -262, -150], [50, -300, -400], [40, -300, -700], [40, -260, -760]], + [[-120, -230, 250], [-200, -250, 330], [-160, -230, 440], [-60, -120, 470]], + ]; + const oilCurves = oilLines.map((pts) => new THREE.CatmullRomCurve3(pts.map((p) => new V3(mm(p[0]), mm(p[1]), mm(p[2]))))); + for (const c of oilCurves) add(root, new THREE.TubeGeometry(c, 40, mm(11), 10, false), M.oil, 'oil'); + add(root, new THREE.BoxGeometry(mm(240), mm(60), mm(300)).translate(0, mm(-272), 0), M.caseDark, 'oil'); + + // ------------------------------------------------------------ baffles, cowling, the test stand + const baffleGeo = (() => { + const sh = new THREE.Shape(); + sh.moveTo(mm(-44), mm(420)); + sh.lineTo(mm(44), mm(420)); + sh.lineTo(mm(56), mm(560)); + sh.lineTo(mm(-56), mm(560)); + sh.closePath(); + return new THREE.ExtrudeGeometry(sh, {depth: mm(3), bevelEnabled: false}).translate(0, 0, -mm(1.5)).rotateY(Math.PI / 2); + })(); + for (const row of ['rear', 'front']) { + for (const cy of ROWS[row]) { + const b = add(rowG[row], baffleGeo, M.black, 'baffle'); + b.rotation.z = (cy.angle + 20) * D2R; + b.position.z = mm(E.rowZ[row]); + b.rotation.order = 'ZYX'; + b.scale.set(1, 1, 1); + } + } + const cowl = add( + root, + latheZ( + [ + [640, -300], + [668, -120], + [690, 120], + [700, 260], + [690, 330], + [655, 352], + [610, 340], + [612, 320], + [664, 300], + [672, 240], + [662, 120], + [636, -120], + [612, -298], + ], + 96, + ), + M.cowl, + 'cowl', + {glassable: true}, + ); + void cowl; + // the mount ring at the rear and a tubular run-up stand down to the concrete + add(root, new THREE.TorusGeometry(mm(352), mm(22), 12, 64).translate(0, 0, mm(-360)), M.stand, 'stand'); + const leg = (a, b) => { + const A = new V3(...a.map(mm)); + const B = new V3(...b.map(mm)); + const g = new THREE.CylinderGeometry(mm(24), mm(24), A.distanceTo(B), 12); + const m = add(root, g, M.stand, 'stand'); + m.position.copy(A).add(B).multiplyScalar(0.5); + m.quaternion.setFromUnitVectors(new V3(0, 1, 0), B.clone().sub(A).normalize()); + }; + const Fy = FLOOR_Y * 1000; + for (const s of [-1, 1]) { + leg([s * 300, -180, -360], [s * 700, Fy, -150]); + leg([s * 300, -180, -360], [s * 700, Fy, -1100]); + leg([s * 340, 60, -360], [s * 700, Fy + 900, -620]); + leg([s * 700, Fy, -150], [s * 700, Fy, -1100]); + } + leg([-700, Fy, -1100], [700, Fy, -1100]); + leg([-700, Fy, -150], [700, Fy, -150]); + + // ------------------------------------------------------------ the air and the oil, as particles along their paths + const dotGeo = new THREE.SphereGeometry(1, 10, 8); + const airDots = new THREE.InstancedMesh(dotGeo, new THREE.MeshBasicMaterial({color: ACCENT, transparent: true, opacity: 0.9, depthWrite: false}), 18 * 5 + 60); + airDots.frustumCulled = false; + airDots.renderOrder = 4; + root.add(airDots); + const oilDots = new THREE.InstancedMesh(dotGeo, new THREE.MeshBasicMaterial({color: '#d0902c', transparent: true, opacity: 0.95, depthWrite: false}), 3 * 10); + oilDots.frustumCulled = false; + oilDots.renderOrder = 4; + root.add(oilDots); + // the charge's path inside the rear case: the carburettor's throat down to the impeller's eye, out to the diffuser + const throat = new THREE.CatmullRomCurve3([new V3(0, 0.33, -0.56), new V3(0, 0.22, -0.48), new V3(0, 0.06, -0.4), new V3(0, 0.0, -0.33)]); + + // ------------------------------------------------------------ anchors for the callouts (world, metres) + const top = CYL[0]; + const front1 = CYL[1]; + const A = { + head: () => cylinders[0].g.localToWorld(new V3(0, mm(560), 0)), + fins: () => cylinders[0].g.localToWorld(new V3(mm(-100), mm(360), 0)), + headFront: () => cylinders[1].g.localToWorld(new V3(0, mm(540), mm(30))), + pushrod: () => cylinders[1].g.localToWorld(new V3(mm(18), mm(400), mm(124))), + harness: () => new V3(...polar(-60, 302, 268).map(mm)), + magneto: () => magnetos[1].g.localToWorld(new V3(0, mm(60), 0)), + nose: () => new V3(0, mm(250), mm(520)), + hub: () => new V3(0, 0, mm(900)), + blade: () => blades[0].localToWorld(new V3(0, 1.4, 0)), + pipe: () => pipeCurves[8].getPoint(0.55), + carb: () => new V3(0, mm(410), mm(-560)), + starter: () => new V3(0, 0, mm(-1440)), + impeller: () => impG.localToWorld(new V3(0, mm(120), 0)), + camRing: (row = 'front') => camRings[row].localToWorld(new V3(mm(-100), mm(-100), 0)), + master: (row = 'front') => rods[row].master.localToWorld(new V3(0, mm(150), 0)), + art: (row, c) => rods[row].arts[c].localToWorld(new V3(0, mm(E.l * 0.5), 0)), + pin: (row = 'front') => crank[row].localToWorld(new V3(0, mm(E.r * (row === 'rear' ? 1 : -1)), mm(-44))), + piston: (c) => pistons[c - 1].localToWorld(new V3(0, mm(66), 0)), + tappet: (c, ev) => train[c - 1][ev].tp.localToWorld(new V3(0, mm(40), 0)), + rocker: (c, ev) => train[c - 1][ev].rk.localToWorld(new V3(0, 0, mm(30))), + valve: (c, ev) => train[c - 1][ev].v.localToWorld(new V3(0, mm(470), 0)), + gear: () => gearG.localToWorld(new V3(mm(-90), mm(90), 0)), + oilPump: () => new V3(0, mm(-250), mm(-760)), + sump: () => new V3(mm(100), mm(-280), 0), + baffle: () => cylinders[4].g.localToWorld(new V3(mm(120), mm(520), 0)), + cowl: () => new V3(mm(-600), mm(330), mm(300)), + cylAt: (c, y = 520) => cylinders[c - 1].g.localToWorld(new V3(0, mm(y), 0)), + }; + void top; + void front1; + + // ------------------------------------------------------------ cutaways and visibility + const ghostOf = new Map(); + const ghost = (mat) => { + let g = ghostOf.get(mat); + if (!g) { + g = mat.clone(); + g.transparent = true; + g.depthWrite = false; + g.clipShadows = true; + ghostOf.set(mat, g); + } + return g; + }; + const cut = {mode: 'solid', glass: false}; + const all = Object.values(parts).flat(); + const allMats = new Set(); + for (const m of all) allMats.add(m.material); + for (const m of Object.values(M)) allMats.add(m); + const setCut = (mode, plane) => { + cut.mode = mode; + if (plane) CLIP[0].copy(plane); + const planes = mode === 'section' ? CLIP : null; + for (const mat of [...allMats, ...ghostOf.values()]) { + mat.clippingPlanes = planes; + mat.needsUpdate = true; + } + }; + + // ------------------------------------------------------------ pose everything from the crank angle + const tmp = new V3(); + const m4 = new THREE.Matrix4(); + const q = new THREE.Quaternion(); + const sc = new V3(); + const up = new V3(0, 1, 0); + /** + * fx: th (crank °), vis {group: 0..1 opacity}, glass (bool: case, barrels, heads, pipes as glass), apart (0..1), + * glow[18] (the flame in each chamber, 0..1), headGlow[18], camHi[18] ({in, ex} 0..1 accent on the tappet and tube), + * blur (propeller blur 0..1), air (phase), airK (0..1), oil (phase), oilK (0..1) + */ + const update = (fx) => { + const th = fx.th; + const vis = fx.vis || {}; + // groups' visibility: 1 is the part's own material, 0 is hidden, between is a ghost + for (const g of GROUPS) { + const v = vis[g] ?? 1; + for (const m of parts[g]) { + if (v <= 0.01) { + m.visible = false; + continue; + } + const vf = fx.focus && m.userData.cyl && m.userData.cyl !== fx.focus && !m.userData.keep ? v * (1 - (fx.focusK ?? 1)) : v; + if (vf <= 0.01) { + m.visible = false; + continue; + } + m.visible = true; + if (m.userData.isFlame) continue; + const base = m.userData.mat; + if (m.userData.glassable && fx.glass) m.material = M.glass; + else if (m.userData.ownMat) { + m.material = base; + base.transparent = vf < 0.99; + base.depthWrite = vf >= 0.99; + base.opacity = vf; + } else if (vf < 0.99) { + const gm = ghost(base); + gm.opacity = vf; + m.material = gm; + } else m.material = base; + } + } + const apart = fx.apart || 0; + rowG.front.position.z = apart * 0.2; + rowG.rear.position.z = -apart * 0.14; + rowG.rear.visible = (fx.hideRear || 0) < 0.5; + // crank + crank.rear.rotation.z = th * D2R; + crank.front.rotation.z = th * D2R; + // rods and pistons, from the exact geometry of the master and articulated rods + for (const row of ['rear', 'front']) { + const P = rowPose(row, th); + const z = mm(E.rowZ[row]); + const R = rods[row]; + R.master.position.set(mm(-P.C[0]), mm(P.C[1]), z); + R.master.rotation.z = Math.atan2(P.d[0], P.d[1]); + for (const cy of ROWS[row]) { + const x = P.cyl[cy.c]; + pistons[cy.c - 1].position.y = mm(x.s); + if (x.master) continue; + const art = R.arts[cy.c]; + const dx = x.P[0] - x.K[0]; + const dy = x.P[1] - x.K[1]; + art.position.set(mm(-x.K[0]), mm(x.K[1]), z); + art.rotation.z = Math.atan2(dx, dy); + } + } + // the cam rings turn against the crank at 1/8; tappets ride their lobes, rockers and valves follow + for (const row of ['rear', 'front']) camRings[row].rotation.z = th * CAM.ratio * D2R; + for (const C of cylinders) { + const c = C.cy.c; + for (const ev of ['in', 'ex']) { + const T = train[c - 1][ev]; + const L = lift(c, ev, th); + T.tp.position.y = mm(152 + 12 * L); + T.v.position.y = mm(-CAM.liftMm * L); + T.rk.rotation.x = L * 0.2 * (ev === 'in' ? -1 : 1); + const hi = fx.camHi ? fx.camHi[c - 1]?.[ev] || 0 : 0; + if (hi > 0.05) { + T.tp.material = M.accent; + T.v.material = M.accent; + } + } + const glow = fx.glow ? fx.glow[c - 1] : 0; + C.flame.material.opacity = Math.min(0.85, glow) * (vis.cyl ?? 1); + C.flame.visible = glow > 0.01 && (vis.cyl ?? 1) > 0.01 && (!fx.focus || fx.focus === c || (fx.focusK ?? 1) < 0.5); + const hg = fx.headGlow ? fx.headGlow[c - 1] : 0; + if (C.head.material !== M.glass) C.head.material.emissiveIntensity = 0.95 * hg; + } + // the reduction gear: the sun on the crank, the ring fixed, the carrier (and the propeller) at 0.45 + const prop = th * GEAR.prop; + sun.rotation.z = th * D2R; + carrier.rotation.z = prop * D2R; + // a pinion rolling on the fixed ring: its spin relative to the carrier is -(R/p) times the carrier's turn + for (const p of planets) p.rotation.z = (-(rpR / rpP) * prop) * D2R; + propG.rotation.z = (prop + (fx.propOff ?? PROP_OFF)) * D2R; + const blur = fx.blur || 0; + const bo = (1 - blur) * (vis.prop ?? 1); + for (const b of blades) { + b.visible = bo > 0.02; + if (b.visible) { + const gm = bo < 0.99 ? ghost(M.blade) : M.blade; + gm.opacity = bo; + b.material = gm; + } + } + blurDisc.visible = blur > 0.01 && (vis.prop ?? 1) > 0.01; + blurDisc.material.opacity = blur * 0.32 * (vis.prop ?? 1); + blurTip.visible = blurDisc.visible; + blurTip.material.opacity = blur * 0.45 * (vis.prop ?? 1); + blurDisc.rotation.z = prop * D2R; + impG.rotation.z = th * GEAR.impLow * D2R; + for (const mg of magnetos) mg.rotor.rotation.y = th * 0.5 * D2R; + // the charge: dots down the throat, through the impeller, out along every pipe + const airK = fx.airK || 0; + airDots.visible = airK > 0.01; + if (airDots.visible) { + let n = 0; + const ph = fx.air || 0; + const s = 0.011 * airK; + for (let i = 0; i < 18; i++) { + for (let j = 0; j < 5; j++) { + const u = (((j / 5 + ph + i * 0.137) % 1) + 1) % 1; + pipeCurves[i].getPoint(u, tmp); + m4.compose(tmp, q, sc.set(s, s, s)); + airDots.setMatrixAt(n++, m4); + } + } + for (let j = 0; j < 60; j++) { + const u = (((j / 60 + ph * 3) % 1) + 1) % 1; + if (u < 0.5) throat.getPoint(u * 2, tmp); + else { + const a = j * 2.4 + ph * 20; + const r = 0.04 + (u - 0.5) * 0.58; + tmp.set(Math.cos(a) * r, Math.sin(a) * r, -0.31); + } + m4.compose(tmp, q, sc.set(s, s, s)); + airDots.setMatrixAt(n++, m4); + } + airDots.instanceMatrix.needsUpdate = true; + airDots.material.opacity = 0.9 * airK; + } + const oilK = fx.oilK || 0; + oilDots.visible = oilK > 0.01; + M.oil.emissiveIntensity = 0.6 * oilK; + if (oilDots.visible) { + let n = 0; + for (let i = 0; i < 3; i++) + for (let j = 0; j < 10; j++) { + const u = (((j / 10 + (fx.oil || 0)) % 1) + 1) % 1; + oilCurves[i].getPoint(u, tmp); + m4.compose(tmp, q, sc.set(0.014, 0.014, 0.014)); + oilDots.setMatrixAt(n++, m4); + } + oilDots.instanceMatrix.needsUpdate = true; + oilDots.material.opacity = oilK; + } + void up; + void lobeOffset; + }; + + return {root, update, setCut, CLIP, A, parts, M, cylinders, rods, pistons, crank, camRings, blades, rowG, plugAt, cut, FLOOR_Y}; +} diff --git a/machines/radial/r2800-shared/schedule.js b/machines/radial/r2800-shared/schedule.js new file mode 100644 index 0000000..eb0fc8b --- /dev/null +++ b/machines/radial/r2800-shared/schedule.js @@ -0,0 +1,168 @@ +// The film's operator script and its one input. A run of the engine is planned once in physical time τ (s): the +// starter, the ignition, the first firings missed then caught, idle, the climb to take-off rpm, the throttle back. +// The film plays it through a slow-motion map τ(t). The crank angle θ is integrated from the rpm once, at load, and +// every pose, valve, spark, gauge and sound of the film is read from θ(t). No three.js: node imports it for the +// timeline and the score. +import {FIRE, ORDER, RATING, SPARK_ADV, stateAt} from './engine.js'; + +export const DURATION = 40; +export const FPS_TABLE = 1200; // table rate, samples per second of film + +// operator moves: views and the buttons the cursor presses +export const SCRIPT = [ + {t: 0, cam: 'hero'}, + {t: 1.6, press: 'starter'}, + {t: 3.3, press: 'ignition'}, + {t: 6.4, cam: 'face'}, + {t: 12.6, cam: 'rowcut'}, + {t: 18.6, cam: 'apart'}, + {t: 23.6, cam: 'cam'}, + {t: 28.4, cam: 'takeoff', press: 'throttle'}, + {t: 32.6, cam: 'faceFull'}, + {t: 35.4, cam: 'heroEnd', press: 'throttleBack'}, +]; +export const BEATS = SCRIPT.filter((e) => e.t > 0).map((e) => e.t); +export const camAtName = (t) => SCRIPT.filter((e) => e.cam && e.t <= t).pop().cam; +export const camSince = (t) => t - SCRIPT.filter((e) => e.cam && e.t <= t).pop().t; + +const smoother = (x) => { + const u = Math.min(1, Math.max(0, x)); + return u * u * u * (u * (u * 6 - 15) + 10); +}; +// slow motion: τ seconds per film second, eased between keys in log space +const RATE = [ + [0, 1], + [6.4, 1], + [7.6, 1 / 25], + [12.6, 1 / 25], + [13.4, 1 / 40], + [23.6, 1 / 40], + [24.4, 1 / 14], + [28.4, 1 / 14], + [29.6, 1], + [DURATION, 1], +]; +export const rateAt = (t) => { + let i = 0; + while (i < RATE.length - 2 && t >= RATE[i + 1][0]) i++; + const [t0, a] = RATE[i]; + const [t1, b] = RATE[i + 1]; + const k = smoother((t - t0) / (t1 - t0)); + return Math.exp(Math.log(a) + (Math.log(b) - Math.log(a)) * k); +}; + +// ------------------------------------------------------------ the tables: τ(t), then N(τ), θ, the air +const NT = Math.ceil(DURATION * FPS_TABLE) + 2; +const TAU = new Float64Array(NT); +for (let i = 1; i < NT; i++) { + const t = (i - 0.5) / FPS_TABLE; + TAU[i] = TAU[i - 1] + rateAt(t) / FPS_TABLE; +} +const lerpT = (arr, t) => { + const x = Math.min(NT - 1.001, Math.max(0, t * FPS_TABLE)); + const i = Math.floor(x); + return arr[i] + (arr[i + 1] - arr[i]) * (x - i); +}; +export const tauAt = (t) => lerpT(TAU, t); + +// the run, in physical seconds, keyed to the film's beats +export const RUN = (() => { + const s = tauAt(1.6); + const ign = tauAt(3.3); + return { + starter: s, // the starter engages + ign, // magnetos on + catch0: ign + 0.25, // the first firings, mostly missed + catch1: ign + 1.05, // every cylinder firing + disengage: ign + 1.3, // the starter lets go + climb: tauAt(29.7), // the throttle opens + climbLen: 3.0, + back: tauAt(35.6), // the throttle closes + backLen: 3.0, + }; +})(); +const {idle, crank} = RATING; +const TO = RATING.takeoff.rpm; +/** the planned engine speed (rpm) at physical time τ */ +export const rpmAtTau = (tau) => { + const R = RUN; + let N = crank * smoother((tau - R.starter) / 1.0); + // caught: a flare to ~1,050 rpm, then idle + const up = smoother((tau - (R.ign + 0.85)) / 1.0); + const settle = smoother((tau - (R.ign + 1.85)) / 1.15); + N += up * (1050 - crank) - settle * (1050 - idle); + N += smoother((tau - R.climb) / R.climbLen) * (TO - idle); + N -= smoother((tau - R.back) / R.backLen) * (TO - idle); + return Math.max(0, N); +}; +/** 0 on the starter, 1 when every cylinder fires and the engine carries itself */ +export const runAtTau = (tau) => smoother((tau - (RUN.ign + 0.6)) / 1.0); +/** the chance that a spark lights its charge, while the engine catches */ +export const catchAtTau = (tau) => (tau < RUN.ign ? 0 : 0.12 + 0.88 * smoother((tau - RUN.catch0) / (RUN.catch1 - RUN.catch0))); +export const starterAtTau = (tau) => (tau >= RUN.starter && tau < RUN.disengage ? 1 : 0); + +const TH = new Float64Array(NT); // crank angle, degrees +const AIR = new Float64Array(NT); // the charge carried down the pipes, in turns of a pipe (for the particles) +const THETA0 = 6; +TH[0] = THETA0; +for (let i = 1; i < NT; i++) { + const tau = (TAU[i] + TAU[i - 1]) / 2; + const dtau = TAU[i] - TAU[i - 1]; + const N = rpmAtTau(tau); + TH[i] = TH[i - 1] + N * 6 * dtau; + const st = stateAt(N, runAtTau(tau)); + AIR[i] = AIR[i - 1] + (N / 60) * (st.map / 29.92) * dtau * 0.2; +} +export const thetaAt = (t) => lerpT(TH, t); +export const airAt = (t) => lerpT(AIR, t); +export const rpmAt = (t) => rpmAtTau(tauAt(t)); +/** film time at which the crank reaches th (θ is monotone) */ +export const tAtTheta = (th) => { + if (th <= TH[0]) return 0; + let lo = 0; + let hi = NT - 1; + if (th >= TH[hi]) return DURATION; + while (hi - lo > 1) { + const mid = (lo + hi) >> 1; + if (TH[mid] < th) lo = mid; + else hi = mid; + } + const f = (th - TH[lo]) / Math.max(1e-9, TH[hi] - TH[lo]); + return (lo + f) / FPS_TABLE; +}; + +// ------------------------------------------------------------ the sparks +const hash = (n) => { + const x = Math.sin(n * 127.1 + 311.7) * 43758.5453; + return x - Math.floor(x); +}; +const IDX = Object.fromEntries(ORDER.map((c, i) => [c, i])); +/** spark number m of cylinder c (m-th cycle): its crank angle */ +const sparkTheta = (c, m) => FIRE[c] - SPARK_ADV + 720 * m; +/** does spark (c, m) light its charge? the ignition must be on and the engine catching */ +export const firesAt = (c, m, tau) => hash(m * 18 + IDX[c] + 7) < catchAtTau(tau); +/** the last spark of cylinder c at film time t: when it was (film s), whether it lit, its crank angle */ +export function lastSpark(c, t) { + const th = thetaAt(t); + const m = Math.floor((th - (FIRE[c] - SPARK_ADV)) / 720); + const ths = sparkTheta(c, m); + const ts = tAtTheta(ths); + const tau = tauAt(ts); + return {t: ts, th: ths, lit: tau >= RUN.ign && firesAt(c, m, tau), m}; +} +/** every spark of the film after the ignition, for the score: [t, cylinder, lit] */ +export function sparkList() { + const out = []; + const th1 = TH[NT - 1]; + for (const c of ORDER) { + for (let m = -1; sparkTheta(c, m) < th1; m++) { + const ths = sparkTheta(c, m); + if (ths < TH[0]) continue; + const t = tAtTheta(ths); + const tau = tauAt(t); + if (tau < RUN.ign) continue; + out.push([+t.toFixed(4), c, firesAt(c, m, tau) ? 1 : 0]); + } + } + return out.sort((a, b) => a[0] - b[0]); +} diff --git a/machines/radial/r2800-shared/score.py b/machines/radial/r2800-shared/score.py new file mode 100644 index 0000000..6990726 --- /dev/null +++ b/machines/radial/r2800-shared/score.py @@ -0,0 +1,129 @@ +"""Score for Radial (an R-2800 Double Wasp after public sources), every sound on the film's own timeline. + +The starter whines up and settles on A4 (the one key, D minor, that every tonal sound keeps: the starter, the low +drone, the click); the first sparks after the magnetos come on are coughs, the missed ones silent (events.json lists +every spark, lit or not, from the same schedule the film draws). Once the engine runs, each firing is a dull thud +while they come slower than ~12 a second on screen (the slow-motion stretches); faster, they merge into a growl +whose pulse is the firing rate on screen, 9 a turn, with the half- and first-order beats under it. The propeller's +wash rises with its speed. A quiet click on each button the tour's cursor presses. + + node r2800-shared/make-timeline.mjs && python3 "$SKILL_DIR/run_sfx.py" r2800-shared/score.py +""" + +import json +import math +import os +import random + +from sfx.dsp import svf, zeros +from sfx.score_kit import airy, bang, hz, thud +from sfx.synth import SR, bandnoise, click + +TIMELINE = "../r2800-film/timeline.json" +OUT = os.path.join(os.environ.get("TEARDOWN_OUT", "teardown-out"), "radial-score.wav") +TARGET_LUFS = -14.0 +SEED = 2800 +HERE = os.path.dirname(os.path.abspath(__file__)) + + +def smooth(a, b, x): + u = min(1.0, max(0.0, (x - a) / (b - a))) + return u * u * (3 - 2 * u) + + +def score(mix, tl): + dur = tl["duration"] + b = tl["beats"] + with open(os.path.join(HERE, "../r2800-film/events.json"), encoding="utf8") as f: + ev = json.load(f) + rate = ev["rate"] + S = ev["samples"] # rpm, slow, map, fireHzScreen, theta + n = int(dur * SR) + + def at(t, i): + x = min(len(S) - 1.001, max(0.0, t * rate)) + k = int(x) + return S[k][i] + (S[k + 1][i] - S[k][i]) * (x - k) + + # ---------------------------------------------------------------- the low drone: D, very quiet, the whole way + drone = zeros(n) + f0 = hz("D2") + for k in range(n): + t = k / SR + env = min(1.0, t / 2.0, (dur - t) / 2.5) + drone[k] = env * (math.sin(2 * math.pi * f0 * t) + 0.5 * math.sin(2 * math.pi * f0 * 1.5 * t + 0.4 * math.sin(0.3 * t)) + 0.3 * math.sin(2 * math.pi * f0 * 2 * t)) + drone = svf(drone, 500, 0.6, "lp") + mix.put(0, drone, 0.05) + + # ---------------------------------------------------------------- the starter: a whine up to A4, then it lets go + t0 = b["starter"] + t1 = b["disengage"] + m = int((t1 - t0 + 0.6) * SR) + whine = [] + ph = 0.0 + for k in range(m): + t = t0 + k / SR + spin = smooth(t0, t0 + 1.0, t) if t < t1 else max(0.0, 1 - (t - t1) / 0.6) + f = hz("A4") * (0.25 + 0.75 * spin) + ph += 2 * math.pi * f / SR + g = spin * (1 if t < t1 else 0.8) + whine.append(g * (math.sin(ph) * 0.6 + 0.25 * math.sin(2 * ph) + 0.12 * math.sin(3 * ph))) + mix.put(t0, svf(whine, 2400, 0.7, "lp"), 0.06) + mix.put(t0, airy(t1 - t0 + 0.4, 300, 900, 0.5), 0.02) + + # ---------------------------------------------------------------- sparks: coughs while it catches, thuds in slow motion + rnd = random.Random(SEED) + catch_end = b["disengage"] + 0.6 + for t, c, lit in ev["sparks"]: + if t >= dur - 0.05: + continue + fire = at(t, 3) + if t < catch_end: + if lit: + mix.put(t, bang(0.5 + 0.5 * rnd.random(), seed=int(t * 1000)), 0.11 * (0.6 + 0.4 * rnd.random()), rnd.uniform(-0.25, 0.25)) + continue + g = 1 - smooth(8, 18, fire) + if g > 0.01: + mix.put(t, thud(54 + 6 * (c % 3), 0.07, 0.32), 0.16 * g, 0.12 if c % 2 else -0.12) + + # ---------------------------------------------------------------- the growl: the firings merged, pulse = their rate on screen + growl = zeros(n) + ph = 0.0 + phc = 0.0 + for k in range(n): + t = k / SR + fire = at(t, 3) + level = smooth(10, 30, fire) + if fire <= 0.5: + continue + ph += 2 * math.pi * fire / SR + phc += 2 * math.pi * fire / 9 / SR + # a pulse train at the firing rate, the first and half orders under it (rows and rods not quite alike) + p = math.sin(ph) + 0.5 * math.sin(2 * ph) + 0.25 * math.sin(3 * ph) + p *= 0.75 + 0.25 * math.sin(phc) + 0.12 * math.sin(phc / 2) + sub = math.sin(phc) * 0.6 + math.sin(phc / 2) * 0.35 + growl[k] = level * (math.tanh(1.4 * p) * 0.7 + sub) + growl = svf(growl, 900, 0.7, "lp") + mix.put(0, growl, 0.11) + # the exhaust's grit over it: band noise opening with the rpm + grit = bandnoise(n, lambda k: 300 + 1.1 * at(k / SR, 0) * at(k / SR, 1), q=0.6) + for k in range(n): + t = k / SR + grit[k] *= smooth(10, 30, at(t, 3)) * (0.3 + 0.7 * min(1.0, at(t, 0) / 2700)) + mix.put(0, grit, 0.05) + + # ---------------------------------------------------------------- the propeller's wash: air, rising with its speed, blade-pass beat + wash = bandnoise(n, lambda k: 700 + 500 * min(1.0, at(k / SR, 0) / 2700), q=0.5) + php = 0.0 + for k in range(n): + t = k / SR + N = at(t, 0) * at(t, 1) + bpf = 3 * N * 0.45 / 60 + php += 2 * math.pi * bpf / SR + lvl = (min(1.0, N / 2700)) ** 2 + wash[k] *= lvl * (0.8 + 0.2 * math.sin(php)) + mix.put(0, wash, 0.09) + + # ---------------------------------------------------------------- the cursor's clicks + for t in b["views"]: + mix.put(t, click(2200, 0.03), 0.05) diff --git a/machines/radial/r2800-shared/stage.js b/machines/radial/r2800-shared/stage.js new file mode 100644 index 0000000..f3d77c2 --- /dev/null +++ b/machines/radial/r2800-shared/stage.js @@ -0,0 +1,218 @@ +// Radial's stage: a 1940s airfield under a white overcast. A sky dome pale at the zenith (#e4ebf0) down to a warm, +// light horizon; a light concrete apron in 5 m slabs fading into the haze; a hard outdoor sun from the upper left +// with a crisp shadow on the concrete; a pale sky fill. frame(fx, cam) poses the engine and draws one frame. +import * as THREE from 'three'; +import {EffectComposer} from 'three/addons/postprocessing/EffectComposer.js'; +import {GTAOPass} from 'three/addons/postprocessing/GTAOPass.js'; +import {OutputPass} from 'three/addons/postprocessing/OutputPass.js'; +import {Pass} from 'three/addons/postprocessing/Pass.js'; +import {RenderPass} from 'three/addons/postprocessing/RenderPass.js'; +import {buildEngine, FLOOR_Y} from './model.js'; + +const V3 = THREE.Vector3; +export const SKY = {zenith: '#e4ebf0', mid: '#edf0f0', horizon: '#f3ece1', ground: '#e6dfd3'}; + +function skyDome() { + const mat = new THREE.ShaderMaterial({ + side: THREE.BackSide, + depthWrite: false, + fog: false, + uniforms: { + zen: {value: new THREE.Color(SKY.zenith)}, + mid: {value: new THREE.Color(SKY.mid)}, + hor: {value: new THREE.Color(SKY.horizon)}, + gnd: {value: new THREE.Color(SKY.ground)}, + }, + vertexShader: 'varying vec3 vD; void main(){ vD = normalize(position); gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); gl_Position.z = gl_Position.w; }', + fragmentShader: + 'uniform vec3 zen; uniform vec3 mid; uniform vec3 hor; uniform vec3 gnd; varying vec3 vD;' + + 'void main(){ float y = vD.y; vec3 c;' + + ' if (y > 0.0) { float a = clamp(y / 0.18, 0.0, 1.0); float b = clamp((y - 0.18) / 0.6, 0.0, 1.0); c = mix(mix(hor, mid, a), zen, b); }' + + ' else { c = mix(hor, gnd, clamp(-y / 0.08, 0.0, 1.0)); }' + + ' gl_FragColor = vec4(c, 1.0); }', + }); + const m = new THREE.Mesh(new THREE.SphereGeometry(80, 32, 16), mat); + m.frustumCulled = false; + m.renderOrder = -10; + return m; +} +function concreteTexture() { + const c = document.createElement('canvas'); + c.width = c.height = 512; + const g = c.getContext('2d'); + g.fillStyle = '#d9d3c8'; + g.fillRect(0, 0, 512, 512); + // a fixed speckle (a seeded generator: the texture is the same every load) + let s = 7; + const r = () => ((s = (s * 16807) % 2147483647) / 2147483647); + for (let i = 0; i < 9000; i++) { + const v = 190 + Math.floor(r() * 40); + g.fillStyle = `rgba(${v},${v - 4},${v - 12},${0.25 + r() * 0.3})`; + g.fillRect(r() * 512, r() * 512, 1 + r() * 2, 1 + r() * 2); + } + for (let i = 0; i < 14; i++) { + g.fillStyle = `rgba(150,140,125,${0.04 + r() * 0.05})`; + g.beginPath(); + g.ellipse(r() * 512, r() * 512, 20 + r() * 70, 10 + r() * 40, r() * 3, 0, Math.PI * 2); + g.fill(); + } + // the joints of a slab + g.strokeStyle = 'rgba(140,132,120,0.3)'; + g.lineWidth = 2.5; + g.strokeRect(1.5, 1.5, 509, 509); + const t = new THREE.CanvasTexture(c); + t.wrapS = t.wrapT = THREE.RepeatWrapping; + t.repeat.set(16, 16); + t.anisotropy = 8; + t.colorSpace = THREE.SRGBColorSpace; + return t; +} + +export function createStage({canvas}) { + const renderer = new THREE.WebGLRenderer({canvas, antialias: false, preserveDrawingBuffer: true, powerPreference: 'high-performance'}); + renderer.toneMapping = THREE.NeutralToneMapping; + renderer.outputColorSpace = THREE.SRGBColorSpace; + renderer.shadowMap.enabled = true; + renderer.shadowMap.type = THREE.PCFShadowMap; + renderer.localClippingEnabled = true; + const scene = new THREE.Scene(); + scene.background = new THREE.Color(SKY.horizon); + scene.fog = new THREE.Fog(SKY.horizon, 14, 46); + const sky = skyDome(); + scene.add(sky); + const camera = new THREE.PerspectiveCamera(26, 16 / 9, 0.02, 120); + const composer = new EffectComposer(renderer, new THREE.WebGLRenderTarget(4, 4, {type: THREE.HalfFloatType, samples: 8})); + composer.addPass(new RenderPass(scene, camera)); + const gtao = new GTAOPass(scene, camera, 4, 4); + gtao.output = GTAOPass.OUTPUT.Default; + gtao.blendIntensity = 0.65; + gtao.updateGtaoMaterial({radius: 0.07, distanceExponent: 1.4, thickness: 0.6, scale: 1.0, samples: 16, distanceFallOff: 1.0, screenSpaceRadius: false}); + gtao.updatePdMaterial({lumaPhi: 10, depthPhi: 2, normalPhi: 3, radius: 6, rings: 2, samples: 16}); + class Toggle extends Pass { + constructor(fn) { + super(); + this.needsSwap = false; + this.fn = fn; + } + render() { + this.fn(); + } + } + const aoSkip = (on) => { + sky.visible = on; + floor.visible = on; + }; + composer.addPass(new Toggle(() => aoSkip(false))); + composer.addPass(gtao); + composer.addPass(new Toggle(() => aoSkip(true))); + composer.addPass(new OutputPass()); + + // an overcast sky for the metal to reflect: bright above, the warm apron below, a brighter patch toward the sun + { + const env = new THREE.Scene(); + env.background = new THREE.Color('#d6dbde'); + const box = (w, h, pos, color, k) => { + const m = new THREE.Mesh(new THREE.PlaneGeometry(w, h), new THREE.MeshBasicMaterial({color: new THREE.Color(color).multiplyScalar(k), side: THREE.DoubleSide})); + m.position.copy(pos); + m.lookAt(0, 0, 0); + env.add(m); + }; + box(30, 30, new V3(0, 16, 0), '#eef2f5', 2.2); + box(10, 8, new V3(-12, 9, 6), '#ffffff', 3.0); + box(30, 4, new V3(0, 1, -16), '#f2ece2', 1.3); + box(30, 4, new V3(0, 1, 16), '#f2ece2', 1.3); + const g = new THREE.Mesh(new THREE.CircleGeometry(40, 32), new THREE.MeshBasicMaterial({color: '#bdb6aa', side: THREE.DoubleSide})); + g.rotation.x = -Math.PI / 2; + g.position.y = -3; + env.add(g); + const pm = new THREE.PMREMGenerator(renderer); + scene.environment = pm.fromScene(env, 0.03).texture; + scene.environmentIntensity = 0.75; + pm.dispose(); + } + const sun = new THREE.DirectionalLight('#fffaf0', 3.0); + sun.position.set(-4.2, 7.5, 3.4); + sun.target.position.set(0, -0.6, -0.2); + sun.castShadow = true; + Object.assign(sun.shadow.camera, {left: -3.2, right: 3.2, top: 3.2, bottom: -3.2, near: 2, far: 20}); + sun.shadow.mapSize.set(4096, 4096); + sun.shadow.bias = -0.0003; + sun.shadow.normalBias = 0.012; + scene.add(sun, sun.target); + scene.add(new THREE.HemisphereLight('#eaf0f4', '#cbbfae', 0.9)); + + const floor = new THREE.Mesh(new THREE.PlaneGeometry(120, 120), new THREE.MeshStandardMaterial({color: '#ffffff', map: concreteTexture(), roughness: 0.92, metalness: 0})); + floor.rotation.x = -Math.PI / 2; + floor.position.y = FLOOR_Y; + floor.receiveShadow = true; + floor.material.map.repeat.set(24, 24); + scene.add(floor); + + const eng = buildEngine(); + scene.add(eng.root); + + const size = {w: 1600, h: 900, pr: 1}; + const resize = (w, h, pr) => { + size.w = w; + size.h = h; + size.pr = pr; + renderer.setPixelRatio(pr); + renderer.setSize(w, h, false); + composer.setPixelRatio(pr); + composer.setSize(w, h); + camera.aspect = w / h; + camera.updateProjectionMatrix(); + }; + let aoWanted = true; + // cam: target (tx, ty, tz), azimuth from +z toward +x, elevation, distance (radians, metres), sx/sy screen shift + const frame = (fx, cam) => { + const {tx, ty, tz, az, el, d} = cam; + camera.position.set(tx + d * Math.cos(el) * Math.sin(az), ty + d * Math.sin(el), tz + d * Math.cos(el) * Math.cos(az)); + camera.lookAt(tx, ty, tz); + camera.fov = cam.fov ?? 26; + camera.near = Math.max(0.01, d * 0.03); + camera.updateProjectionMatrix(); + camera.setViewOffset(size.w, size.h, -(cam.sx ?? 0), -(cam.sy ?? 0), size.w, size.h); + camera.updateMatrixWorld(); + sky.position.copy(camera.position); + gtao.enabled = aoWanted && eng.cut.mode !== 'section' && !fx.glass; + eng.update(fx); + composer.render(); + }; + const pv = new V3(); + const project = (p) => { + if (!p) return null; + pv.copy(p).project(camera); + if (pv.z > 1) return null; + return [(pv.x * 0.5 + 0.5) * size.w, (-pv.y * 0.5 + 0.5) * size.h]; + }; + const setQuality = ({samples, ao, shadow}) => { + if (samples !== undefined) { + for (const t of [composer.renderTarget1, composer.renderTarget2]) { + t.samples = samples; + t.dispose(); + } + } + if (ao !== undefined) aoWanted = ao; + if (shadow !== undefined) { + sun.shadow.mapSize.set(shadow, shadow); + sun.shadow.map?.dispose(); + sun.shadow.map = null; + } + }; + // the section plane: n·x + c ≥ 0 is kept + const planes = { + rowcut: new THREE.Plane(new V3(0, 0, -1), 0.105), + profile: new THREE.Plane(new V3(-1, 0, 0), 0), + inside: new THREE.Plane(new V3(-1, 0, 0), 0), + }; + let cutKey = ''; + const setCut = (mode, planeKey = 'profile') => { + const key = mode + ':' + planeKey; + if (key === cutKey) return; + cutKey = key; + eng.setCut(mode, planes[planeKey]); + }; + setCut('solid'); + return {renderer, scene, camera, eng, composer, gtao, sun, resize, frame, project, size, setQuality, setCut, planes}; +} diff --git a/package-lock.json b/package-lock.json index b4c6f1b..17297ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,10 @@ "license": "MIT", "dependencies": { "@fontsource-variable/inter": "5.3.0", + "@fontsource/barlow-condensed": "5.3.0", "@fontsource/instrument-serif": "^5.3.0", "@fontsource/jetbrains-mono": "5.3.0", + "@fontsource/saira-stencil-one": "5.3.0", "esbuild": "0.28.1", "three": "0.186.1" } @@ -441,6 +443,15 @@ "url": "https://github.com/sponsors/ayuhito" } }, + "node_modules/@fontsource/barlow-condensed": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/barlow-condensed/-/barlow-condensed-5.3.0.tgz", + "integrity": "sha512-RA7MmIx0v3eQ6Gcf74qLVLOwLB0GpPOzx+eU9iG/AmCnSJGcIWYeU8y6CEMGZ210MGwGg5CZhzLkkvyZdTTk1g==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, "node_modules/@fontsource/instrument-serif": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@fontsource/instrument-serif/-/instrument-serif-5.3.0.tgz", @@ -459,6 +470,15 @@ "url": "https://github.com/sponsors/ayuhito" } }, + "node_modules/@fontsource/saira-stencil-one": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/saira-stencil-one/-/saira-stencil-one-5.3.0.tgz", + "integrity": "sha512-b7ILM7KrAWTIUSWKuzV29lTQZV5QOGhlmXXEt3Dsg/rJ4lo1kjUjuo6dBG9Iq+pR7wRZCVXftinVHDof+i9nSA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, "node_modules/esbuild": { "version": "0.28.1", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", diff --git a/package.json b/package.json index 12c5ea9..52b3aba 100644 --- a/package.json +++ b/package.json @@ -6,14 +6,16 @@ "description": "Exploded: real machines, built from code with their real numbers, that you can take apart in the browser.", "license": "MIT", "scripts": { - "check": "node machines/spindl/check.mjs && node machines/quantum/check.mjs && node scripts/test-root-lang.mjs", + "check": "node machines/spindl/check.mjs && node machines/quantum/check.mjs && node machines/radial/check.mjs && node scripts/test-root-lang.mjs", "build": "node scripts/build.mjs", "test": "npm run check && npm run build" }, "dependencies": { "@fontsource-variable/inter": "5.3.0", + "@fontsource/barlow-condensed": "5.3.0", "@fontsource/instrument-serif": "^5.3.0", "@fontsource/jetbrains-mono": "5.3.0", + "@fontsource/saira-stencil-one": "5.3.0", "esbuild": "0.28.1", "three": "0.186.1" } diff --git a/scripts/build.mjs b/scripts/build.mjs index 0e186a3..63eb0b4 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -57,6 +57,8 @@ const bundle = async (entry) => { write: false, target: 'es2022', legalComments: 'none', + // a machine may inline its own type (Radial's fonts.js) + loader: {'.woff2': 'base64'}, logLevel: 'warning', }); return res.outputFiles[0].text.replace(/<\/script/g, '<\\/script'); diff --git a/scripts/machines.mjs b/scripts/machines.mjs index a73ce2c..c693300 100644 --- a/scripts/machines.mjs +++ b/scripts/machines.mjs @@ -1,6 +1,35 @@ // The collection: one entry per machine, newest first (the gallery's order). Each machine lives in machines//, // its live page's entry point is `entry`, its share card `og` (1200 x 630, also the gallery's thumbnail). export const MACHINES = [ + { + slug: 'radial', + name: 'Radial', + entry: 'machines/radial/r2800-live/main.js', + og: 'machines/radial/og.png', + meta: { + en: { + title: 'Radial · the R-2800 Double Wasp, taken apart', + line: 'An 18-cylinder twin-row radial: the starter, the firing order round the star, a master rod and its eight articulated rods, the cam rings, take-off rpm.', + description: + 'The Pratt & Whitney R-2800 Double Wasp you can take apart in the browser: 18 cylinders in two rows, a master rod and eight articulated rods per row, cam rings instead of a camshaft, the run from the starter to 2,700 rpm. A C-series R-2800 after public sources; not affiliated with Pratt & Whitney.', + locale: 'en_US', + }, + fr: { + title: 'Radial · le R-2800 Double Wasp, démonté', + line: 'Un moteur en étoile à 18 cylindres sur deux rangées : le démarreur, l’ordre d’allumage autour de l’étoile, une bielle maîtresse et ses huit biellettes, les anneaux à cames, le régime de décollage.', + description: + 'Le Pratt & Whitney R-2800 Double Wasp à démonter dans le navigateur : 18 cylindres sur deux rangées, une bielle maîtresse et huit biellettes par rangée, des anneaux à cames au lieu d’un arbre à cames, la marche du démarreur à 2 700 tr/min. Un R-2800 de série C d’après les sources publiques ; sans lien avec Pratt & Whitney.', + locale: 'fr_FR', + }, + es: { + title: 'Radial · el R-2800 Double Wasp, desmontado', + line: 'Un motor radial de 18 cilindros en dos filas: el arranque, el orden de encendido alrededor de la estrella, una biela maestra y sus ocho articuladas, los anillos de levas, el régimen de despegue.', + description: + 'El Pratt & Whitney R-2800 Double Wasp para desmontar en el navegador: 18 cilindros en dos filas, una biela maestra y ocho articuladas por fila, anillos de levas en lugar de árbol de levas, la marcha del arranque a 2700 rpm. Un R-2800 de la serie C según fuentes públicas; sin relación con Pratt & Whitney.', + locale: 'es_ES', + }, + }, + }, { slug: 'quantum', name: 'Quantum', @@ -67,7 +96,7 @@ export const GALLERY = { lead: 'Real machines, built from code with their real numbers, that you can take apart in the browser.', sub: 'Every gauge reads the same model that moves the parts. Left alone, each one plays a guided tour; any click hands control over.', open: 'Open', - description: 'Real machines, built from code with their real numbers, that you can take apart in the browser: a hard drive, a photonic quantum computer.', + description: 'Real machines, built from code with their real numbers, that you can take apart in the browser: an 18-cylinder radial engine, a hard drive, a photonic quantum computer.', locale: 'en_US', }, fr: { @@ -75,7 +104,7 @@ export const GALLERY = { lead: 'De vraies machines, construites en code avec leurs vrais chiffres, à démonter dans le navigateur.', sub: 'Chaque jauge lit le modèle qui fait bouger les pièces. Laissée seule, chacune joue une visite guidée ; un clic suffit pour prendre la main.', open: 'Ouvrir', - description: 'De vraies machines, construites en code avec leurs vrais chiffres, à démonter dans le navigateur : un disque dur, un ordinateur quantique photonique.', + description: 'De vraies machines, construites en code avec leurs vrais chiffres, à démonter dans le navigateur : un moteur en étoile à 18 cylindres, un disque dur, un ordinateur quantique photonique.', locale: 'fr_FR', }, es: { @@ -83,7 +112,7 @@ export const GALLERY = { lead: 'Máquinas reales, construidas en código con sus cifras reales, para desmontar en el navegador.', sub: 'Cada indicador lee el mismo modelo que mueve las piezas. Si la dejas sola, cada una hace una visita guiada; cualquier clic te da el control.', open: 'Abrir', - description: 'Máquinas reales, construidas en código con sus cifras reales, para desmontar en el navegador: un disco duro, un ordenador cuántico fotónico.', + description: 'Máquinas reales, construidas en código con sus cifras reales, para desmontar en el navegador: un motor radial de 18 cilindros, un disco duro, un ordenador cuántico fotónico.', locale: 'es_ES', }, };