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'],