feat(labs): opticsbench round 2 — wave optics + interference + visual depth

Новый режим «Волны» (DiffractionSim, ~400 строк):
- Опыт Юнга: I = I₀·cos²(πd·sinθ/λ), полосы Δy = λL/d, концентрические волновые фронты
- Однощелевая дифракция: (sin α/α)², центральный максимум 2λ/a, минимумы
- Дифракционная решётка: (sin Nψ/N sin ψ)², главные порядки 0,±1,±2,±3, white-light спектр

Новый режим «Интерференция» (InterferenceSim):
- Кольца Ньютона: top-down + cross-section, r_n = √(nλR) тёмные / √((n+½)λR) светлые
- Тонкоплёночная интерференция: integrate I=cos²(π·OPD/λ) по спектру → цвет плёнки
  пресеты: мыльная плёнка / масло на воде / антибликовое покрытие
- Поляризация: P1+P2, закон Малюса I=I₀·cos²θ, анимированные E-векторы, гашение при 90°
  + связь с Брюстером из refraction mode

Визуальные эффекты (5 toggle'ов в <details>):
- «Волновые фронты»: перпендикулярные tick-marks вдоль лучей, λ_screen∝1/n в среде
- «Туман»: LabFX smoke partikles по всему canvas — лучи видны через дым
- «Lens flare»: 6-spike starburst + ghost-reflections + chromatic ring (additive composite)
- «Конструкция Гюйгенса»: расходящиеся wavelets на границе для refraction/reflection
- «Каустики»: 20-ray trace через линзу с aberration-shifted f_eff → настоящая caustic curve
- localStorage persist + zero cost when off

THEORY entry расширен 3 секциями (Юнг + однощель + решётка).

Каталог теперь: 7 вкладок в оптической скамье (lens / mirror / refraction / freebuild / prism / waves / interf).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-26 12:33:10 +03:00
parent 2a8011d68e
commit add17b1bb4
4 changed files with 1602 additions and 11 deletions
+3
View File
@@ -510,6 +510,9 @@
{ head: 'Закон Снеллиуса', formula: 'n_1 \\sin\\theta_1 = n_2 \\sin\\theta_2', text: 'Угол преломления зависит от соотношения показателей преломления двух сред.' },
{ head: 'Полное внутреннее отражение', formula: '\\theta_c = \\arcsin\\frac{n_2}{n_1}', text: 'При n₁ > n₂ и θ₁ > θc — свет полностью отражается.' },
{ head: 'Показатель преломления', formula: 'n = \\frac{c}{v}', text: 'Воздух ≈ 1.00, вода = 1.33, стекло ≈ 1.5, алмаз = 2.42.' },
{ head: 'Волновая оптика — Юнг', formula: 'I(y) = I_0 \\cos^2\\!\\left(\\frac{\\pi d \\sin\\theta}{\\lambda}\\right)', vars: [['d','расстояние между щелями'],['\\lambda','длина волны']], text: 'Расстояние между полосами: Δy = λL/d.' },
{ head: 'Однощелевая дифракция', formula: 'I(\\theta) = I_0 \\left(\\frac{\\sin\\alpha}{\\alpha}\\right)^2,\\quad \\alpha = \\frac{\\pi a \\sin\\theta}{\\lambda}', text: 'Угловая ширина центрального максимума: 2λ/a. Минимумы при a·sinθ = nλ.' },
{ head: 'Дифракционная решётка', formula: 'd \\sin\\theta = n\\lambda', vars: [['d','период решётки'],['n','порядок'],['\\lambda','длина волны']], text: 'Разрешающая способность R = Nn, где N — число щелей, n — порядок максимума.' },
]
},
thinlens: {
File diff suppressed because it is too large Load Diff