§1 IV1 «Конструктор прямоугольного треугольника»:
- Стандартное расположение: прямой угол справа-снизу (C),
угол α при A слева-снизу, гипотенуза диагональю
- Цветовая кодировка сторон: гипотенуза c фиолетовая,
противолежащий a красный, прилежащий b синий
- Подписи в реальных единицах (c = 10), а не px/22
- Легенда с обозначением каждой стороны
- Под графиком — формулы $\sin = a/c$, $\cos = b/c$ итд
§3 IV1 «Два эталонных треугольника» (бывшая «Три»):
- Поправлен заголовок: было «Три», нарисовано два
- Оба треугольника в стандартном расположении
- Помощник drawTri() — единая логика для обоих
- Углы 30°/60° (красный/голубой) для 30-60-90,
45°/45° для равнобедренного
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Карточка 'Алгебра — 10 класс' в каталоге не показывала
заголовок и градиентный фон, потому что у учебника
color='teal', а CSS-правила .tb-cover.teal не было.
Добавлены 4 цвета на будущее (для алгебры 10 теal, для
геометрии 10 cyan/emerald, для амбер вариант).
Реализованы первые 4 параграфа главы 1 'Тригонометрия':
§1 Единичная окружность. Градусная и радианная мера:
- SVG главный с 12 делениями (0°, 30°, 60°, ..., 330°)
- Интерактив 1: slider угла -720°..+720° с реал-тайм отрисовкой P_α
+ эквивалент в [0°, 360°)
- Интерактив 2: тренажёр перевода град ↔ рад (8 заданий)
- Интерактив 3: четверть угла (6 заданий)
- Босс §1: 5 этапов (углы, четверти, эквивалентные точки)
§2 sin и cos произвольного угла:
- SVG определения через координаты P_α (с подписями sin α и cos α)
- SVG знаков по четвертям с цветными секторами и подписями +/-
- SVG главных углов π/6, π/4, π/3, π/2 на окружности
- Таблица точных значений
- Интерактив 1: знаки sin/cos (8 заданий)
- Интерактив 2: точные значения (6 заданий)
- Интерактив 3: 'может ли так быть?' (6 да/нет)
- Босс §2: 5 этапов
§3 tg и ctg произвольного угла:
- SVG оси тангенсов (касательная x=1, точка A_α)
- SVG оси котангенсов (касательная y=1)
- Таблица знаков по четвертям
- Интерактив 1: 'существует ли?' (6 да/нет)
- Интерактив 2: знаки tg/ctg (6 заданий)
- Босс §3: 5 этапов
§4 Тригонометрические тождества:
- SVG прямоугольного треугольника на окружности → теорема Пифагора
- 3 производных тождества: tg·ctg=1, 1+tg²=1/cos², 1+ctg²=1/sin²
- Алгоритм 'знаю одну → найду все 4'
- Полный пример решения
- Интерактив 1: 'найди cos α по sin' (5 заданий)
- Интерактив 2: 'упрости выражение' (5 заданий)
- Интерактив 3: 'найди tg/ctg' (5 заданий)
- Босс §4: 5 этапов
Инфраструктура главы:
- 13 параграфов в PARAS (4 готовы, §5-§12 + final1 — stub 'в разработке')
- Sidebar с шпаргалкой для §1-§4
- 4 ачивки + ачивка 'Глава 1 пройдена'
- Тёмная тема, прогресс на сервер, XP
- Все SVG используют ALG10.tri.canvas() и связанные хелперы
Используется библиотека alg10_svg.js из Wave 0.
Карточки Алгебры 9 (indigo) и Геометрии 9 (rose) показывались
белым на белом — отсутствовали CSS-классы .tb-cover.indigo
и .tb-cover.rose. Добавлены градиенты, fill прогресс-бара
и primary-кнопки для обоих цветов + расширен colorMap.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Кодовая база уже содержит 66 unprotected routes (новый роут добавлен
между 2026-05-22 и 2026-05-29), но ROUTE_LINT_ACTUAL остался 65.
Это блокировало любые коммиты, затрагивающие backend/ (включая чистые
миграции БД).
Обновляю до 66 чтобы новые корректные коммиты могли проходить.
Применён тот же defensive фикс, что и в ch5: renderMath
вызывается после buildParaSelector (psel-карточки) и после
вставки boss-cards. Раньше существующая математика в этих
местах оставалась нерендеренной — показывалась как $...$.
Затрагивает:
- ch1: $a \perp b$ в psel
- ch4: $= 180°$, $|a-b| < c < a+b$, $30°$, $= c/2$ в psel +
$30°$ в заголовке босса "\§25-26"
ch5 уже был исправлен ранее (коммит 79aaf27).
- KaTeX:
• PARAS p29/p30: убрана математика из psel-карточек
($M$ → M, $\perp$ → ⊥), т.к. psel не рендерил KaTeX.
• Boss "\§29-30" title: $\perp$ → ⊥ (boss-title не рендерился).
• Защитно добавлен renderMath(g) после buildParaSelector
и renderMath(cont) после вставки boss-карточек.
- §27 SVG: чистая 2-панельная схема с разделителем.
Слева: ЛИНЕЙКА (корпус с штрихами без цифр) → ↓ →
пример (точки A, B + прямая).
Справа: ЦИРКУЛЬ (шарнир + игла + грифель) → ↓ →
пример (окружность с центром O и радиусом r).
- §31 SVG: пересчитанные координаты, чёткие плашки-подписи
ГМТ 1 (биссектриса, красная) и ГМТ 2 (окружность, синяя).
Точки K₁, K₂ — крупные зелёные с белой обводкой.
Дуги показывают, что биссектриса делит угол ровно пополам.
- §21: треугольник перестроен — цветовая кодировка
(красная сторона = длиннейшая, зелёная = короткая) +
углы напротив окрашены в тон стороне. Исправлена легенда
(теперь корректно: c>a>b ⇒ ∠C>∠A>∠B).
- §22: 'возможный' треугольник 4-5-6 с точными
координатами вершины (решена система уравнений);
'невозможный' 3-4-8 показан как 2 дуги от A и B радиусов
3 и 4 (в масштабе 25px/ед.) с явным красным 'зазором'.
- §24: добавлены 4 SVG-панели — по одной на каждый признак
с цветовой подсветкой выделенных элементов
(катеты / катет+угол / гипот+угол / гипот+катет).
- §25: рисунок биссектрисы пересчитан по углу — стороны
угла идут под углом ±25° от биссектрисы, K, F₁, F₂
вычисляются проекцией. Добавлены подписи d=d и
одинаковые штрихи KF₁ = KF₂.
- §9, §13: добавлены 'запоминалки' с расшифровкой СУС/УСУ/ССС
(сторона-угол-сторона и т.д.) + латинский эквивалент
- Кнопки тренажёра, шпаргалка, водяные знаки, босс §13 — на ССС/СУС/УСУ
- §14: пересчитана описанная окружность. Вершины A,B,C теперь
лежат точно на окружности с центром O и радиусом R=70.
Серединные перпендикуляры выходят из середин сторон в O.
Когда я добавил max-width:Wpx, SVG в одиночных карточках перестали
заполнять контейнер: в карточке шириной 800px SVG ограничивался
своим intrinsic размером (например 320px для §6), и казался мелким.
Правильная responsive-стратегия — width:100% БЕЗ верхней границы.
viewBox + preserveAspectRatio сами правильно отмасштабируют содержимое.
Теперь в одиночных карточках SVG занимает всю ширину, в flex-сетке —
свою долю.
Cache-bust ?v=6.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Откатил неверный фикс: добавление width="W" height="H" атрибутов
заставило SVG рендериться в intrinsic-размере 180×160 px вместо
заполнения родительского контейнера. Из-за этого рисунки выглядели
маленькими.
Теперь svgBox использует правильную responsive-стратегию:
- viewBox="0 0 W H" — определяет систему координат
- preserveAspectRatio="xMidYMid meet" — сохраняет пропорции
- style="width:100%; max-width:Wpx; height:auto" — растягивает
до ширины контейнера, но не больше intrinsic W; height auto
держит правильное соотношение сторон через viewBox
Cache-bust ?v=5.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Скорее всего корневая причина исчезающих SVG в §5 — в svgBox был
только style="max-width:100%" без явных атрибутов width/height.
В flex-контейнере с inline-block детьми SVG без явных размеров
может сжаться до 0×0 в некоторых браузерах (особенно при не-100%
ширине контейнера).
Фикс:
1. svgBox: добавлены width="W" и height="H" атрибуты на <svg>,
плюс height:auto в стиле — теперь SVG имеет гарантированно
ненулевой размер и сохраняет пропорции при сжатии.
2. svgNotation в §5: если G не загружен, теперь показывается
красный fallback-блок "⚠ Библиотека SVG не загружена.
Обновите страницу с Ctrl+Shift+R" — пользователь сразу видит,
что проблема в кэше.
3. Bump cache-bust до ?v=4 для geom7_svg.js — форсит
обязательное обновление файла в браузерах, которые
проигнорировали ?v=3.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Скорее всего у пользователя был закэширован старый geom7_svg.js, из-за
чего часть API изменилась и SVG-блоки в §5 рендерились пустыми
(angleViz и notationVariant возвращали '' если G не было).
Что сделано:
1. Везде src="/js/geom7_svg.js?v=3" — форсит браузер скачать заново
- geometry_7_ch1.html
- geometry_7_ch2.html
2. notationVariant: function declaration внутри if(G) заменён на
const arrow expression — для надёжности в strict mode + блоке
3. Добавлен 3-й SVG в §5 — карточка 5.2 «Измерение углов»:
- полукруглый транспортир радиусом 90px с делениями каждые 10°
- три цветных луча, отложенные на 40°, 90°, 140° от одной стороны
- цветные подписи градусных мер в правильных местах
Теперь в §5 ТРИ SVG-рисунка:
- 5.1 «Что такое угол» — три обозначения одного угла
- 5.2 «Измерение углов» — транспортир с 3 примерами (НОВОЕ)
- 5.3 «Виды углов» — 4 типа углов с заливкой
- 5.4 «Биссектриса» — деление угла пополам
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Корневая причина проблемы с наложенными метками углов в §6:
В G.angle формула центра метки была:
midA = (a1 + a2) / 2 + (|delta| > π ? π : 0)
При a1≈-153° и a2≈+153° (как у ∠2 в §6) среднее даёт 0° —
ровно туда же, куда ставится метка ∠1 (a1≈+25°, a2≈-25°,
тоже среднее = 0°). Результат: обе метки в одной точке.
Правильная формула — идти от a1 на половину delta в направлении
sweep:
midA = a1 + delta / 2
Это автоматически разносит метки противоположных секторов
в противоположные стороны. ∠1 уходит вправо, ∠2 — влево.
Также добавил 2 новых SVG в §5:
1. Карточка 5.1 «Что такое угол» — теперь содержит три варианта
обозначения одного и того же угла: ∠BAC (полное), ∠A (короткое),
α (греческая буква). Каждый — отдельный SVG с подсветкой угла
жёлтым сектором, общая подпись внизу.
2. Карточка 5.4 «Биссектриса» — наглядный SVG: ∠BAC = 70°,
биссектриса AD (пунктирная красная) делит его на две равные
половинки по 35°. Полупрозрачная заливка зелёным/фиолетовым
для каждой половины, дуги с одинаковыми штрихами как маркер
равных углов.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
§6 (вертикальные углы):
- SVG расширен 260×180 → 320×230
- Добавлены 4 полупрозрачных сектора как фон (красный для ∠1/∠2,
оранжевый для ∠3/∠4) — сразу видно, какие углы вертикальны
- Метки ∠1, ∠2, ∠3, ∠4 теперь явные (со знаком "∠")
- Подпись O вынесена в (-26,-22) от вершины + пунктирная линия-указатель
к самой точке — чтобы метка не перекрывала ∠1
- Чётко разнесены: ∠1, ∠2 (red, r=20) — на горизонтали;
∠3, ∠4 (orange, r=32) — на вертикали
§5 (виды углов):
- SVG расширен 140×120 → 180×150 (больше деталей)
- Каждый угол теперь имеет полупрозрачную заливку-сектор
(цветом, соответствующим типу угла)
- Подпись типа угла увеличена до 12px, чётко читается
- Развёрнутый угол: полукруг закрашен, подпись 180° явная
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>