M4SH / Studio · Документація

Студія інтерактивної математики в русі

M4SH Studio — набір браузерних інструментів для створення математичних візуалізацій під уроки й відео. Рівняння оживають, обертаються та малюються в кадрі. Усе працює локально в браузері, без сервера.

Огляд

Що таке M4SH Studio

Це хаб (M4SH Studio.html) із дев’ятьма самостійними інструментами. Кожен — окрема повноекранна сторінка з власним рушієм рендеру на <canvas>, темною темою бренду й кнопкою ← студія для повернення на головну.

  • Спільна візуальна мова: темно-синій фон, dot-grid, зелений акцент, шрифти Inter + JetBrains Mono.
  • Кожен інструмент розрахований на запис відео: формати кадру 9:16 / 1:1 / 16:9, режим «Чистий кадр» та спільна нижня панель запису (згортається).
  • Жодних залежностей від бекенду — математика, рендер і експорт відбуваються в браузері.
Філософія. Глядач має бачити причинність: форма → координата → сигнал відбувається на очах, як єдиний жест, а не готова картинка.

Перші кроки

Швидкий старт
  1. Відкрий M4SH Studio.html — головну сторінку-хаб.
  2. Обери картку інструмента → відкриється його повноекранна сторінка.
  3. Налаштуй сцену панеллю праворуч (форма, рух, вигляд, кадр).
  4. Для запису: тисни ⤢ Чистий кадр (ховає панель, повний екран) і знімай екран, або скористайся вбудованим експортом відео у Parametric Studio.
Керування 3D-сценами: тягни кадр мишкою — обертання камери, колесо — зум. Працює в Attractor, Surface, Helix, НМТ 3D та на рельєфі Лапласа.

Каталог

Дев’ять інструментів
01 · 3D

Attractor Studio

Дивні атрактори — Rössler, Lorenz, Aizawa та інші. Неонова крива, формули, свої рівняння dx/dy/dz.

Детальніше →
02 · 3D

Surface Studio

Параметричні та мінімальні поверхні r(u,v). Каркас, репер r_u·r_v·n̂, кривизна, проєкції.

Детальніше →
03 · 2D

Parametric Studio

Будь-яка форма → крива P(t) → розгортка y(t). Текст, зображення, малюнок, SVG, символи, області.

Детальніше →
04 · 2D · флагман

Епіцикли Фур'є

Форма → сигнал → спектр → звук. Збіжність, інтерактивний спектр, озвучення.

Детальніше →
05 · 3D · режим

Лаплас

Рельєф |F(s)| над s-площиною; зріз σ=0 — це Фур'є. Тягни полюс → відгук f(t).

Детальніше →
06 · 2D · НМТ

Trig Studio

Одиничне коло → синусоїда. y=A·sin(ωx+φ)+k з анімованими параметрами.

Детальніше →
07 · 2D · НМТ

Нерівності

Системи нерівностей, заштрихована область, межі-криві, морф параметра a.

Детальніше →
08 · 3D

Helix Studio

Просторові криві r(t)=(x,y,z): гвинтова, тороїдальна, вузол-трилисник.

Детальніше →
09 · 3D · НМТ

НМТ 3D Стереометрія

21 шаблон — призми, піраміди, тіла обертання, перерізи. Режим малювання, розгортка.

Детальніше →
• · карта

Карта України

Інтерактивна карта — 24 області + АР Крим окремими регіонами. Контури як форми для Parametric.

Детальніше →

Інструмент 01 · attractor-studio/

Attractor Studio

Двіжок дивних атракторів для зйомки відео. Інтегрує систему ОДУ методом Рунге–Кутти 4-го порядку й малює адитивну неонову хмару точок на чорному тлі — щільні зони світяться до білого, як у референсних роликах.

Що вміє

  • 6 систем: Rössler, Lorenz, Aizawa, Thomas, Halvorsen, Chen — кожна зі своїми рівняннями та формулами в кадрі.
  • Параметри рівнянь наживо (a, b, c / σ, ρ, β…) — крива перераховується миттєво.
  • Режими руху: «малюється» (крива прокладається + камера обертається), «готовий» (лише обертання), «потік» (комета біжить трасою).
  • 6 неонових палітр, розмір/яскравість точок, лінії-павутина, світіння.
  • Свій атрактор — впиши власні dx/dt, dy/dt, dz/dt та параметри; RK4 інтегрує будь-яку систему.
Формати 9:16 / 1:1 / 16:9, обертання камери, драг/зум, «Чистий кадр».

Інструмент 02 · surface-studio/

Surface Studio

Двіжок параметричних і мінімальних поверхонь r(u,v). Малює каркас за глибиною (ближче = яскравіше) та показує диференціальну геометрію в точці: дотичні, нормаль і кривизну, обчислені через першу й другу фундаментальні форми.

Що вміє

  • 10 поверхонь: Еннепер, гелікоїд, катеноїд (мінімальні), сфера, тор, стрічка Мебіуса, сідло мавпи, хвилі sin·cos, пляшка Клейна, поверхня Боя.
  • Репер у рухомій точці: дотичні r_u, r_v та нормаль + слід траєкторії на поверхні й на проєкціях.
  • HUD: координати x, y, z, ‖n̂‖=1 та знак гаусової кривини K.
  • Проєкції на 3 площини, осі, сітка-підлога — усе вмикається.
  • Своя поверхня — задай x/y/z(u,v), діапазони u,v та параметри.

Інструмент 03 · param-studio/

Parametric Studio

Центральний інструмент студії. Ліворуч — крива P(t) у полярному поданні (полюс C + радіус-вектор), праворуч — її розгортка y(t), що пишеться прогресивно під рухомою точкою. Це presentation-runtime: форма стає сигналом як єдиний безперервний жест.

Джерела кривої

  • Аналітичні криві: коло, троянди cos 3θ / cos 5θ, серце, зірка, лемніската, Ліссажу, равлик Паскаля.
  • Форма → P(t) (основне джерело): символи (π Computer Modern, ∞, серце, зірка, λ, Σ), 🇺🇦 контур України + 25 областей, або власний SVG path.
  • Будь-який об'єкт → крива через адаптери входу:
ВхідТехнологіяРезультат
Текст / символopentype.jsконтур гліфа шрифту
Зображення / логоimagetracerjsтрасування найбільшого контуру
Малюванняpointer eventsобведена фігура (миша / стилус / палець)
SVG pathshape.jsпрямий розбір атрибута d
Малювання підтримує мишу, стилус і графічний планшет; під час штриха видно живе прев'ю. Швидкість керує тривалістю проходу для будь-якої форми.

Керування

Швидкість і рух, кольори, перемикачі (пунктир-зв'язок / радіус-вектор / полюс C / сітка), формати 1:1 / 9:16 / 16:9, «Чистий кадр» та експорт відео.

Інструмент 04 · fourier-studio/

Епіцикли Фур'є

Замикає всю студію в одну ідею: будь-яка форма → її сигнал → розклад у обертові вектори → ці вектори відтворюють ту саму форму. Три ефекти живляться одним обчисленням — комплексними коефіцієнтами cₙ контуру (M=2048 вибірок, DFT). Контур береться з того ж ShapePipeline (π, Σ, серце, λ, свій SVG) або малюється від руки.

Три ефекти з одного cₙ

  • Збіжність: N=1 робить повний оберт і малює коло, потім N=2 — повний оберт, … — видно, що додає кожна гармоніка. Поряд — привид цілі й число похибки, що падає; попередній контур згасає, поки малюється новий.
  • Інтерактивний спектр: стовпчики |cₙ| праворуч у кадрі. Наведення підсвічує відповідне коло; клік вимикає гармоніку — і малюнок псується саме в її деталях (велике коло = загальна форма, дрібні = гострі кути).
  • Озвучення: кожна гармоніка → тон f₀·|n|; цілі кратні дають гармонічний тембр. Кнопка «🔊 Як це звучить» і запікання тембру у відеодоріжку (StudioAudio.setExtra).
Режим «Малювання» — фіксоване N, кінчик креслить контур. Повзунок «Тривалість оберту» задає темп, «Безшовний цикл» — для лупів. Зум до курсора, freehand-малювання.

Режим · fourier-studio/laplace.js

Лаплас — Фур'є як зріз

Перемикач Перетворення: Фур'є / Лаплас у тій самій вкладці. Перетворення Фур'є — це Лаплас, узятий лише на уявній осі (σ=0). Студія показує 3D-рельєф |F(s)| над усією s-площиною, де F(s)=Π(s−zₖ)/Π(s−pₖ), а світна лінія σ=0 на поверхні — це і є фур'є-спектр |F(iω)|.

  • Рельєф |F(s)|: вежі полюсів, западини нулів; камера обертається (тягни по рельєфу — крутити вручну).
  • Перетягни полюс × на s-площині → відгук f(t) праворуч міняється наживо: ліва півплощина — затухає, на осі — незатухаюча осциляція, права — вибухає.
  • Пресети: резонанс, затухання, осцилятор, нестабільний, режектор. Слайдери σ/ω для обраного полюса, + полюс / + нуль.
Трилогія перетворень студії: геометрія (Parametric) → частоти (Фур'є) → комплексна площина (Лаплас). Фур'є виявляється зрізом Лапласа. Це флагманський бренд-/showcase-контент рівня вишів/інженерії, а не урочний матеріал для НМТ.

Ще інструменти · НМТ і простір

Тригонометрія, нерівності, криві, стереометрія
trig-studio · 2D · НМТ

Trig Studio

Одиничне коло обертається й проєктується в синусоїду. y=A·sin(ωx+φ)+k з анімованими параметрами — зв'язок кола й хвилі видно наживо.

inequalities · 2D · НМТ

Нерівності

Системи нерівностей із заштрихованою областю. Перетин / обʼєднання, повні межі-криві (marching squares), скануючий фронт заливки, морф параметра a, формула в кадрі.

helix-studio · 3D

Helix Studio

Просторові криві r(t)=(x,y,z): гвинтова, конічна спіраль, тороїдальна, вузол-трилисник, Ліссажу 3D, крива Вівіані. Дотична, проєкції на площини, своя крива.

nmt-3d-bundle · 3D · НМТ

НМТ 3D Стереометрія

21 шаблон — куб, призми, піраміди, зрізані тіла, тіла обертання, вписані/описані, переріз через 3 точки. Режими «адаптація» / «малювання», анімована розгортка, висота, апофема.

Інструмент 04 · ukraine-map/

Карта України

Інтерактивна SVG-карта: 24 області та Автономна Республіка Крим — кожна окремим контуром, плюс контур держави зверху.

  • Наведення підсвічує область і показує назву; клік виділяє та виводить «регіон NN / 25».
  • Двосторонній зв'язок зі списком регіонів (алфавітний, з індексами).
  • Контури в координатах 0–100 — готові як форми для Parametric Studio (та сама геометрія підключена там у списку областей).

Як це працює

Пайплайн форма → сигнал

Серце Parametric Studio — універсальний конвеєр. Будь-яке джерело зводиться до SVG-контуру, далі — незмінний рушій:

Об'єкт SVG d Контур P(t) Проєкція Сигнал y(t)
  • Arc-length параметризація: контур обходиться рівномірно за довжиною дуги, t ∈ [0, 2π].
  • Проєкція: y(t) = (P(t) − C) · ĵ — вертикальна складова радіус-вектора від полюса C.
  • Нормалізація до спільного боксу — щоб амплітуда сигналу різних форм була порівнянна.
  • Мультиконтури (літери з дірками, острови) обходяться послідовно.
Чому форма первинна. Дослідження показало: ефект референсу дає саме обхід контуру зв'язної форми (безперервний сигнал-долини), а не центральна лінія. Тому в студії форма → контур → P(t) є основним джерелом.

Трилогія перетворень

Той самий P(t) розгортається далі в дві вкладки, що замикають ідею студії:

Геометрія Частоти (Фур'є cₙ) Комплексна площина (Лаплас)

Комплексні коефіцієнти cₙ контуру — це набір обертових векторів (Епіцикли Фур'є); а фур'є-спектр — лише зріз σ=0 великої поверхні |F(s)| (Лаплас). Одне обчислення — три подачі.

Вихід

Запис відео — спільна нижня панель

Кожен інструмент пише відео прямо в браузері, без сервера. Панель запису винесена в спільну нижню панель «🎬 Запис відео» (shared/export-ui.js), а в сайдбарі лишаються тільки налаштування сцени. Обидві панелі згортаються (shared/panels.js) — для майже-повноекранної сцени під зйомку. Два шляхи експорту:

ФорматЯкОсобливості
MP4 (точний)детермінований покадровий рендер → WebCodecsmp4-muxerH.264, стабільні 60 fps без пропусків, будь-яка роздільність. Без звуку.
WebM + звукMediaRecorder захоплює canvas + опційне аудіо через Web Audioзапис у реальному часі, друга доріжка — твоя музика

Якщо WebCodecs недоступний — автоматичний fallback на WebM. Тривалість задається слайдером; кадр i → u = i/N рендериться через детермінований контракт StudioScene.exportFrame(u) — єдина шкала u∈[0,1] = цілий ролик, без залежності від реального часу.

Звук. Фонова музика + голос з мікрофона/файлу з ducking (shared/audio.js). Епіцикли Фур'є додають згенерований тембр спектра прямо в доріжку. Для публічних роликів бери royalty-free музику.

Для розробника

Архітектура файлів

Кожен інструмент — самостійна папка: index.html (UI + рушій) плюс модулі.

M4SH Studio.html        // хаб із картками інструментів

shared/                 // спільне для всіх інструментів
  export-ui.js / .css   // нижня панель запису (dock)
  panels.js             // згортання сайдбару та панелі
  record.js             // StudioRecorder: MP4 (WebCodecs) / WebM
  audio.js              // музика + голос + ducking + setExtra
  config.js · watermark.js · theme.css

attractor-studio/  index.html · attractors.js   // RK4, 6 систем
surface-studio/    index.html · surfaces.js      // 10 поверхонь
param-studio/      index.html · param.js · shape.js · input-adapters.js · ukraine-shapes.js
fourier-studio/    index.html · fourier.js · fourier-audio.js · laplace.js
trig-studio/       index.html · trig.js
inequalities/      index.html · inequalities.js
helix-studio/      index.html · helix.js
nmt-3d-bundle/     index.html · …          // 21 шаблон стереометрії
ukraine-map/       index.html            // інтерактивна SVG-карта

Ключові об'єкти

  • window.StudioScene — спільний контракт сцени для запису: .exportFrame(u) (u∈[0,1] = цілий ролик), .onExportStart/End(), .canvas, .durationSec.
  • window.StudioExportUI.mount(el, {dock:true}) — монтує спільну нижню панель запису; StudioRecorder (exportMP4/exportWebM), StudioAudio (setExtra для запеченого тембру), StudioWatermark.
  • window.FourierStudio / LaplaceScene / FourierAudio — рушії вкладки Фур'є: cₙ, рельєф |F(s)|, озвучення.
  • window.ParamStudio — рушій 2D-сцени; .overlay — хук для малювання поверх.
  • window.ShapePipeline.parsePath(d) → контур, далі arc-length P(t).
  • window.InputAdapterstextToPath, imageToPath, pointsToPath.

Зовнішні бібліотеки (CDN, клієнтські)

mp4-muxer — у всіх інструментах (запис MP4). opentype.jsimagetracerjs — лише в Parametric Studio (текст / зображення). Решта — чистий Canvas + Web Audio, без залежностей.

Розширення

Як додати новий інструмент
  1. Створи папку tool-name/ з index.html та рушієм на <canvas>.
  2. Підключи shared/ (config, watermark, audio, record, export-ui, panels), вистав window.StudioScene (контракт запису: exportFrame(u), onExportStart/End) і змонтуй панель: StudioExportUI.mount(el, {dock:true}).
  3. Дотримуйся теми бренду (змінні --ink, --green, шрифти) і додай посилання ← студія на ../M4SH Studio.html.
  4. Зроби прев'ю-зображення інструмента.
  5. Скопіюй блок .featured у хабі, онови лічильник активних інструментів.
<!-- картка в M4SH Studio.html -->
<a class="featured" href="tool-name/index.html">
  <div class="featured-body">
    <span class="tag live">Активний</span>
    <h3>Назва інструмента</h3>
    <p>Короткий опис…</p>
  </div>
  <div class="featured-art"><img src="tool-name/preview.png"></div>
</a>