From 892024f6a347fd61682f70bd69ea902a5f93c36f Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Thu, 28 May 2026 18:52:56 +0300 Subject: [PATCH] =?UTF-8?q?fix(geom8=20ch4):=20=C2=A74=20=E2=80=94=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=80=D0=BA=D0=B5=D1=80=D1=8B=20=D0=BF=D1=80=D1=8F?= =?UTF-8?q?=D0=BC=D0=BE=D0=B3=D0=BE=20=D1=83=D0=B3=D0=BB=D0=B0=20=D0=BA=20?= =?UTF-8?q?=D1=86=D0=B5=D0=BD=D1=82=D1=80=D1=83=20O=20=D0=B2=D0=BE=20?= =?UTF-8?q?=D0=B2=D1=81=D0=B5=D1=85=20SVG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Тот же системный фикс что и в §3: маркер прямого угла в точке касания T должен быть ВНУТРИ треугольника OTA (между T→O и T→A). Раньше использовалось +u_radius (наружу от центра) — теперь -u_radius (к центру O). Затронуты: - §4 Card 4.1 (задача построения): 2 маркера в T₁, T₂ - §4 Card 4.3 (длина касательной): 1 маркер в T - §4 Интерактив 1 (пошаговое построение, шаги 4-5): 2 маркера Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/textbooks/geometry_8_ch4.html | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/frontend/textbooks/geometry_8_ch4.html b/frontend/textbooks/geometry_8_ch4.html index 2d89766..6ed40bf 100644 --- a/frontend/textbooks/geometry_8_ch4.html +++ b/frontend/textbooks/geometry_8_ch4.html @@ -1690,10 +1690,13 @@ function buildP4(){ - - - - + + + + + + + O A @@ -1735,8 +1738,9 @@ function buildP4(){ - - + + + O A @@ -1869,14 +1873,12 @@ function buildP4(){ const ur2x=(T2X-OX)/R, ur2y=(T2Y-OY)/R; extras+=`T₁`; extras+=`T₂`; - /* right-angle markers: ut must point TOWARD A from each tangent point */ - /* T1 is upper (ur1y<0): CCW perp = down-right = toward A ✓ */ - const ut1x=-ur1y, ut1y=ur1x; + /* right-angle markers: arms toward O (INSIDE △OTA) and toward A */ + const ut1x=-ur1y, ut1y=ur1x; // CCW perp = toward A for upper T1 const s=8; - const rm1=`${(T1X+ur1x*s).toFixed(1)},${(T1Y+ur1y*s).toFixed(1)} ${(T1X+ur1x*s+ut1x*s).toFixed(1)},${(T1Y+ur1y*s+ut1y*s).toFixed(1)} ${(T1X+ut1x*s).toFixed(1)},${(T1Y+ut1y*s).toFixed(1)}`; - /* T2 is lower (ur2y>0): CW perp = up-right = toward A ✓ */ - const ut2x=ur2y, ut2y=-ur2x; - const rm2=`${(T2X+ur2x*s).toFixed(1)},${(T2Y+ur2y*s).toFixed(1)} ${(T2X+ur2x*s+ut2x*s).toFixed(1)},${(T2Y+ur2y*s+ut2y*s).toFixed(1)} ${(T2X+ut2x*s).toFixed(1)},${(T2Y+ut2y*s).toFixed(1)}`; + const rm1=`${(T1X-ur1x*s).toFixed(1)},${(T1Y-ur1y*s).toFixed(1)} ${(T1X-ur1x*s+ut1x*s).toFixed(1)},${(T1Y-ur1y*s+ut1y*s).toFixed(1)} ${(T1X+ut1x*s).toFixed(1)},${(T1Y+ut1y*s).toFixed(1)}`; + const ut2x=ur2y, ut2y=-ur2x; // CW perp = toward A for lower T2 + const rm2=`${(T2X-ur2x*s).toFixed(1)},${(T2Y-ur2y*s).toFixed(1)} ${(T2X-ur2x*s+ut2x*s).toFixed(1)},${(T2Y-ur2y*s+ut2y*s).toFixed(1)} ${(T2X+ut2x*s).toFixed(1)},${(T2Y+ut2y*s).toFixed(1)}`; extras+=``; extras+=``; }