fix(geom8 ch4): §5 Card 5.3 — верхняя сторона угла под 30° (касается обоих кругов)

Было: верхняя сторона угла нарисована до точки (258,56) — это угол
26.66° к горизонтали (half=13.33°). Круги вписаны по формуле
r=d·sin(15°), т.е. ожидался угол 30° (half=15°). Поэтому верхняя
сторона визуально не касалась окружностей — проходила выше.

Стало: верхняя сторона до точки (257,38) — угол ровно 30°
((cos30°,-sin30°)·280 = (242.5,-140)). Биссектриса под 15°.
Оба круга теперь геометрически точно вписаны и касаются обеих
сторон угла.

Добавлены 4 точки касания T₁/T₂/T₃/T₄ с подписями, метки O₁/O₂
сдвинуты чуть-чуть.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-28 18:59:58 +03:00
parent 892024f6a3
commit caef49f387
+27 -12
View File
@@ -2120,27 +2120,42 @@ function buildP5(){
$$|BT_1| = |BT_2|, \\quad |BT_3| = |BT_4|$$
<p style="margin-top:8px">Формула радиуса: $r = d\\cdot\\sin\\dfrac{\\alpha}{2}$, где $d = |BO|$ — расстояние от вершины до центра, $\\alpha$ — угол.</p>
<div style="display:flex;justify-content:center;margin-top:10px">
<svg viewBox="0 0 275 195" style="max-width:285px;background:#fafafa;border:1px solid var(--border);border-radius:10px">
<!-- B=(15,178), half-angle=15°, side1=horizontal, side2=30° above horiz -->
<!-- bisector dir=(cos15°,-sin15°)=(0.966,-0.259) -->
<!-- O₁: r=22, d=84.9 → O₁=(97,156); O₂: r=36, d=139 → O₂=(149,142) -->
<svg viewBox="0 0 280 200" style="max-width:300px;background:#fafafa;border:1px solid var(--border);border-radius:10px">
<!-- B=(15,178), full angle = 30°, half = 15°.
Lower side: horizontal y=178, to (265,178).
Upper side: direction (cos30°,-sin30°)=(0.866,-0.5). At length 280 → (15+242.5, 178-140)=(257,38).
Bisector: (cos15°,-sin15°)=(0.966,-0.259). To length 220 → (15+212.5, 178-57)=(227,121).
O₁: d=84.9, O₁=(15+82, 178-22)=(97,156), r=d·sin15°=22.
O₂: d=139, O₂=(15+134, 178-36)=(149,142), r=d·sin15°=36.
Upper tangent points: foot of perpendicular from O onto upper line.
T₁_up = B + ((O₁-B)·u) · u, where u=(0.866,-0.5).
(O₁-B)·u = 82·0.866 + (-22)·(-0.5) = 71+11 = 82.
T₁_up = (15+82·0.866, 178+82·(-0.5)) = (86,137).
T₂_up = (15+134·0.866, 178+134·(-0.5)) = (131,111). -->
<line x1="15" y1="178" x2="265" y2="178" stroke="#0891b2" stroke-width="2"/>
<line x1="15" y1="178" x2="258" y2="56" stroke="#0891b2" stroke-width="2"/>
<line x1="15" y1="178" x2="220" y2="127" stroke="#64748b" stroke-width="1.3" stroke-dasharray="4,3"/>
<line x1="15" y1="178" x2="257" y2="38" stroke="#0891b2" stroke-width="2"/>
<line x1="15" y1="178" x2="227" y2="121" stroke="#64748b" stroke-width="1.3" stroke-dasharray="4,3"/>
<!-- small circle O₁=(97,156) r=22 -->
<circle cx="97" cy="156" r="22" fill="rgba(8,145,178,.09)" stroke="#0891b2" stroke-width="1.8"/>
<circle cx="97" cy="156" r="2.5" fill="#0e7490"/>
<!-- large circle O₂=(149,142) r=36 -->
<circle cx="149" cy="142" r="36" fill="rgba(8,145,178,.05)" stroke="#0891b2" stroke-width="1.8"/>
<circle cx="149" cy="142" r="2.5" fill="#0e7490"/>
<!-- tangent points: T₁_h=(97,178), T₁_s=(86,137), T₂_h=(149,178), T₂_s=(131,111) -->
<!-- tangent points on lower side -->
<circle cx="97" cy="178" r="3" fill="#10b981"/>
<circle cx="149" cy="178" r="3" fill="#10b981"/>
<circle cx="15" cy="178" r="3" fill="#0e7490"/>
<text x="3" y="175" font-size="10" font-weight="700" fill="#0e7490">B</text>
<!-- O labels just outside circle boundary to avoid overlap -->
<text x="100" y="154" font-size="9" fill="#0e7490" font-weight="700">O₁</text>
<text x="152" y="140" font-size="9" fill="#0e7490" font-weight="700">O₂</text>
<!-- tangent points on upper side -->
<circle cx="86" cy="137" r="3" fill="#10b981"/>
<circle cx="131" cy="111" r="3" fill="#10b981"/>
<!-- B point -->
<circle cx="15" cy="178" r="3.5" fill="#0e7490"/>
<text x="3" y="175" font-size="11" font-weight="700" fill="#0e7490">B</text>
<text x="89" y="190" font-size="9" fill="#065f46" font-weight="700">T₁</text>
<text x="141" y="190" font-size="9" fill="#065f46" font-weight="700">T₂</text>
<text x="63" y="135" font-size="9" fill="#065f46" font-weight="700">T₃</text>
<text x="108" y="110" font-size="9" fill="#065f46" font-weight="700">T₄</text>
<text x="91" y="160" font-size="10" fill="#0e7490" font-weight="700">O₁</text>
<text x="143" y="146" font-size="10" fill="#0e7490" font-weight="700">O₂</text>
</svg>
</div>`);