From 4c1ce8394cde5c56ea049b67f9443297788c787a Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Wed, 24 Jun 2026 13:44:29 +0300 Subject: [PATCH] =?UTF-8?q?feat(trigcircle):=20=D1=88=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BE=D1=81=D0=B8=20Y=20=D0=BD=D0=B0=20=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B5=20(=D0=BA=D0=BE=D0=BE?= =?UTF-8?q?=D1=80=D0=B4=D0=B8=D0=BD=D0=B0=D1=82=D0=BD=D0=B0=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=BE=D1=81=D0=BA=D0=BE=D1=81=D1=82=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - y-ось графика теперь подписана значениями (KaTeX): sin/cos — 1, ½, 0, −½, −1; tg/ctg — 3, 2, 1, 0, −1, −2, −3 - пунктирные линии уровней + подписи слева от панели - подписи прячутся при смене функции (лишние уровни tg/ctg) Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/js/labs/trigcircle.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/frontend/js/labs/trigcircle.js b/frontend/js/labs/trigcircle.js index 913583c..6dce28d 100644 --- a/frontend/js/labs/trigcircle.js +++ b/frontend/js/labs/trigcircle.js @@ -688,15 +688,19 @@ class TrigCircleSim { c.beginPath(); c.moveTo(x0, gy); c.lineTo(x0, gy+gh); c.stroke(); } - /* ±1 lines */ - if (fn==='sin'||fn==='cos') { - c.strokeStyle = 'rgba(255,255,255,0.05)'; c.setLineDash([4, 4]); - [1,-1].forEach(v => { c.beginPath(); c.moveTo(gx, sy(v)); c.lineTo(gx+gw, sy(v)); c.stroke(); }); - c.setLineDash([]); - c.font='500 10px Manrope,sans-serif'; c.fillStyle='rgba(255,255,255,0.22)'; - c.textAlign='right'; c.textBaseline='middle'; - c.fillText('1', gx-5, sy(1)); c.fillText('−1', gx-5, sy(-1)); - } + /* ── шкала значений по оси Y (значения на координатной плоскости) ── */ + const yVals = (fn==='tan'||fn==='cot') + ? [[3,'3'],[2,'2'],[1,'1'],[0,'0'],[-1,'-1'],[-2,'-2'],[-3,'-3']] + : [[1,'1'],[0.5,'\\tfrac{1}{2}'],[0,'0'],[-0.5,'-\\tfrac{1}{2}'],[-1,'-1']]; + yVals.forEach(([v, lx], i) => { + const yy = sy(v); + if (yy < gy + 6 || yy > gy + gh - 6) return; + if (v !== 0) { + c.strokeStyle = 'rgba(255,255,255,0.05)'; c.lineWidth = 1; c.setLineDash([4, 4]); + c.beginPath(); c.moveTo(gx, yy); c.lineTo(gx+gw, yy); c.stroke(); c.setLineDash([]); + } + this._ovLabel('gy' + i, lx, gx - 6, yy, 'rgba(255,255,255,0.55)', 'r'); + }); /* x ticks — линии на canvas, подписи KaTeX-оверлеем */ const ticks = [[0, '0'], [Math.PI/2, '\\tfrac{\\pi}{2}'], [Math.PI, '\\pi'],