From a7ca9a7463fe7409f0ff45c48c9cb4eaea33589b Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Thu, 28 May 2026 16:04:07 +0300 Subject: [PATCH] =?UTF-8?q?fix(geom8=20ch1):=20=C2=A77=20=C2=A710=20?= =?UTF-8?q?=E2=80=94=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BC=D0=B0=D1=80=D0=BA=D0=B5=D1=80=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D1=8F=D0=BC=D0=BE=D0=B3=D0=BE=20=D1=83=D0=B3=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=BE=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=D1=83=D1=80=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit §7 Прямоугольник: - Card 7.1 (теория): 4 path-маркера которые тянулись ПО кромке прямоугольника заменены на правильные polyline L-формы (9px), направленные строго внутрь. - Card 7.2 (свойство диагоналей): не было ни одного маркера прямого угла — добавлены 4 на всех вершинах. - Интерактив 1 «Живой прямоугольник»: маркеры стояли только в 2 углах через которые частично выходили за прямоугольник. Заменены на 4 правильных polyline вычисляемых из Math.min/max границ — работают при любом направлении перетаскивания вершины B. §10 Квадрат: - Card 10.1 (определение): 4 path-маркера трассировавшие по кромке заменены на правильные L-формы. - Card 10.2 (свойства): то же. - Card 10.3 (формулы): добавлены маркеры на все 3 квадрата (6-7px, в цвет каждого квадрата). - Интерактив 1 (слайдер): один -маркер в углу A заменён на 4 правильных polyline-маркера на всех вершинах ABCD, пересчёт по каждому изменению слайдера. Геометрия маркера: для угла V с направлениями u,w внутрь — polyline V+9u → V+9u+9w → V+9w. Маркер всегда внутри фигуры, оба сегмента перпендикулярны кромкам. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/textbooks/geometry_8_ch1.html | 80 +++++++++++++++++++------- 1 file changed, 58 insertions(+), 22 deletions(-) diff --git a/frontend/textbooks/geometry_8_ch1.html b/frontend/textbooks/geometry_8_ch1.html index a86be4a..05ec324 100644 --- a/frontend/textbooks/geometry_8_ch1.html +++ b/frontend/textbooks/geometry_8_ch1.html @@ -2826,11 +2826,11 @@ function buildP7(){
- - - - - + + + + + 90° 90° @@ -2858,6 +2858,11 @@ function buildP7(){
+ + + + + @@ -2970,10 +2975,18 @@ function buildP7(){ s+=''; s+=''; s+=''; - // right-angle marks - const sq=8; - s+=''; - s+=''; + // right-angle marks — proper L-shape at all 4 corners pointing INSIDE the rectangle + const sq=9; + const xl=Math.min(Ra.x,Rb.x), xr=Math.max(Ra.x,Rb.x); + const yt=Math.min(Ra.y,Rc.y), yb=Math.max(Ra.y,Rc.y); + // bottom-left corner + s+=''; + // bottom-right corner + s+=''; + // top-right corner + s+=''; + // top-left corner + s+=''; const labels=['A','B','C','D']; const pts=[Ra,Rb,Rc,Rd]; pts.forEach((v,i)=>{ const m=(i===2); @@ -3697,11 +3710,11 @@ function buildP10(){
- - - - - + + + + + @@ -3751,11 +3764,11 @@ function buildP10(){ a a√2 - - - - - + + + + + P = 4a @@ -3785,6 +3798,21 @@ function buildP10(){ + + + + + + + + + + + + + + +
`); /* --- INTERACTIVE 1: SVG-квадрат со слайдером --- */ @@ -3882,11 +3910,19 @@ function buildP10(){ // diagonals s+=''; s+=''; - // right-angle at O + // right-angle at diagonal intersection O const sq=7; s+=''; - // right-angle marks at corners - s+=''; + // right-angle marks at all 4 corners — proper L-shape pointing INSIDE the square + const m=8; + // A = bottom-left (cx-half, cy+half) + s+=''; + // B = bottom-right (cx+half, cy+half) + s+=''; + // C = top-right (cx+half, cy-half) + s+=''; + // D = top-left (cx-half, cy-half) + s+=''; // center dot s+=''; // side labels