Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | /**
* √3 Demo Narration Segments: "The Tallest Triangle"
*
* Pure data file — no React. Each segment maps a revealProgress range
* to a TTS utterance and a minimum animation duration.
*
* Progress ranges are derived from sqrt3Demo.ts's phase constants:
*
* Seg 0 0.00–0.12 Base — highlight segment from −1 to 1
* Seg 1 0.12–0.30 Build — compass-swing equilateral triangle
* Seg 2 0.30–0.47 Height — dashed altitude drops from apex
* Seg 3 0.47–0.65 Rotate — compass swings height to number line
* Seg 4 0.65–0.80 Mystery — question mark at landing spot
* Seg 5 0.80–1.00 Reveal — star, label, celebration
*/
import type { DemoNarrationSegment } from './useConstantDemoNarration'
/** Shared voice direction for the √3 demo narrator. */
export const SQRT3_DEMO_TONE =
'You are a warm, curious builder-guide for a really smart 5-year-old. ' +
'Ground everything in building triangles and measuring heights. ' +
'Build excitement about the mystery number. ' +
'Be genuinely amazed when it never ends.'
export const SQRT3_DEMO_SEGMENTS: DemoNarrationSegment[] = [
// ── Base ──────────────────────────────────────────────────────────
{
ttsText:
"Let's build something! " +
"Here's our base — a line from minus one to one. " +
"That's two whole units long.",
startProgress: 0.0,
endProgress: 0.12,
animationDurationMs: 4500,
scrubberLabel: 'The base',
},
// ── Build ─────────────────────────────────────────────────────────
{
ttsText:
"Now let's make a PERFECT triangle — one where every side is the SAME length as the base. " +
"Watch — we'll swing a copy up from each end, just like a compass!",
startProgress: 0.12,
endProgress: 0.3,
animationDurationMs: 6500,
scrubberLabel: 'Building triangle',
},
// ── Height ────────────────────────────────────────────────────────
{
ttsText:
'Beautiful! But how TALL is our triangle? ' +
"Let's drop a line straight down from the tip. " +
"That's the height! I wonder how long it is...",
startProgress: 0.3,
endProgress: 0.47,
animationDurationMs: 6000,
scrubberLabel: 'The height',
},
// ── Rotate ────────────────────────────────────────────────────────
{
ttsText:
"Let's measure it! " +
"We'll swing the height down onto the number line, like using a compass. " +
'Watch it rotate...',
startProgress: 0.47,
endProgress: 0.65,
animationDurationMs: 6000,
scrubberLabel: 'Measuring it',
},
// ── Mystery ───────────────────────────────────────────────────────
{
ttsText: 'It landed past one but before two. ' + 'What IS this mystery number?',
startProgress: 0.65,
endProgress: 0.8,
animationDurationMs: 5000,
scrubberLabel: 'Mystery number',
},
// ── Reveal ────────────────────────────────────────────────────────
{
ttsText:
'This is the square root of three! ' +
"It's the height of every perfect triangle, " +
'and it shows up in honeycombs, crystals, and nature everywhere!',
startProgress: 0.8,
endProgress: 1.0,
animationDurationMs: 5500,
scrubberLabel: 'Square root of three',
},
]
|