fix(geom7): корневой баг G.angle (метки ∠1=∠2 садились в одну точку) + 2 новых SVG в §5
Корневая причина проблемы с наложенными метками углов в §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>
This commit is contained in:
@@ -155,8 +155,8 @@ G.angle = function(V, A, B, opts){
|
||||
const color = opts.color || '#dc2626';
|
||||
let s = '<path d="M '+x1+' '+y1+' A '+r+' '+r+' 0 '+large+' '+sweep+' '+x2+' '+y2+'" fill="'+(opts.fill||'none')+'" stroke="'+color+'" stroke-width="'+(opts.width||2)+'"/>';
|
||||
if(opts.label){
|
||||
/* Центр подписи — середина биссектрисы */
|
||||
const midA = (a1 + a2) / 2 + (Math.abs(delta) > Math.PI ? Math.PI : 0);
|
||||
/* Центр подписи — середина ДУГИ, в направлении sweep */
|
||||
const midA = a1 + delta / 2;
|
||||
const lr = r + (opts.labelOffset || 12);
|
||||
const lx = V.x + lr * Math.cos(midA);
|
||||
const ly = V.y + lr * Math.sin(midA);
|
||||
|
||||
Reference in New Issue
Block a user