fix(opticsbench): призма теперь даёт радугу — фикс геометрии + белый свет по умолчанию

Причины 'один луч, работает неправильно':
1. tangDir = efVec/efLen давал тангенциальное направление, при котором преломлённый луч внутри призмы уходил вниз в основание (sFace > 1), а не в выходную правую грань → внешнего луча не было
2. По умолчанию был включён моно-режим — пользователь видел один луч без дисперсии

Исправлено:
- tangDir = 90° по часовой от efNorm (efNorm.y, -efNorm.x) — теперь падающий луч при стандартных углах попадает в выходную грань правильно
- При первом входе в режим призмы window._obWhiteLight = true → 6 спектральных лучей сразу видны (расхождение цветов)
- Добавлена кнопка 'Белый / Моно' в панель призмы для переключения
This commit is contained in:
Maxim Dolgolyov
2026-05-26 18:45:06 +03:00
parent ce54d3576d
commit 970276915c
2 changed files with 24 additions and 1 deletions
+5
View File
@@ -3173,6 +3173,11 @@
<input type="range" id="sl-prism-inc" min="0" max="75" step="1" value="30" oninput="prismParam('incAngle',this.value)" style="flex:1">
</div>
<div class="pp-hint" style="margin-bottom:8px">Тащи призму мышью: ← → вращение, &#8597; угол луча</div>
<div class="gp-section-title" style="margin-bottom:6px">Свет</div>
<div style="display:flex;gap:5px;margin-bottom:10px">
<button class="preset-btn active" id="ob-prism-white-btn" onclick="prismToggleWhite(true,this)" style="flex:1">Белый</button>
<button class="preset-btn" id="ob-prism-mono-btn" onclick="prismToggleWhite(false,this)" style="flex:1">Моно</button>
</div>
<div class="gp-section-title" style="margin-bottom:6px">Пресеты</div>
<div style="display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px">
<button class="preset-btn" onclick="prismPreset(1.5,30)">Стекло (n=1.5)</button>