feat: режим аннотации поверх симуляции в онлайн-уроке + fix планиметрии (arcmark, triangle tools)

Онлайн-урок:
- Кнопка «Рисовать» в баре симуляции (только учителю)
- При активации: холст доски показывается поверх iframe (z-index), фон прозрачный
- Учитель рисует прямо поверх симуляции обычными инструментами
- Студенты видят то же самое через SSE (classroom_sim_annotate)
- Выход из режима → кнопка «Вернуться к симуляции»

Планиметрия (bugfix):
- arcmark теперь рисуется всегда (не зависит от showAngles)
- altitude/median: 1 клик на вершину треугольника (авто-находит противоположную сторону)
- centroid/orthocenter: 1 клик внутри/на треугольник

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-04-14 11:31:39 +03:00
parent 84dac03e53
commit b520f4b849
4 changed files with 133 additions and 0 deletions
+7
View File
@@ -140,6 +140,7 @@ class Whiteboard {
// Board theme
this._boardTheme = opts.boardTheme || 'chalkboard';
this._bgNoiseCache = new Map(); // canvas element per theme
this._annotateMode = false; // true = transparent bg (draw over simulation)
// Compass state machine
this._compassState = 'idle'; // 'idle'|'setting-radius'|'waiting-arc'|'drawing-arc'
@@ -2148,10 +2149,16 @@ class Whiteboard {
return this._bgNoiseCache.get(theme);
}
setAnnotateMode(v) {
this._annotateMode = !!v;
this.render();
}
_renderBg(ctx) {
const W = this._cssW || 300;
const H = this._cssH || 150;
ctx.clearRect(0, 0, W, H);
if (this._annotateMode) return; // transparent bg — simulation shows through
const theme = this._boardTheme || 'chalkboard';
// Base background