diff --git a/frontend/js/labs/trigcircle.js b/frontend/js/labs/trigcircle.js index 7381563..cadb45b 100644 --- a/frontend/js/labs/trigcircle.js +++ b/frontend/js/labs/trigcircle.js @@ -1096,6 +1096,32 @@ if (typeof window !== 'undefined') window.TrigCircleSim = TrigCircleSim; `tg ${s.tan === undefined ? '—' : sg(s.tan)}`; } + // Точные значения + формула приведения (только для табличных углов) + const fEl = document.getElementById('trig-formula'); + if (fEl) { + const beta = Math.round(s.refDeg); + const degR = Math.round(s.deg); + const isTable = [0, 30, 45, 60, 90].some(b => Math.abs(s.refDeg - b) < 0.5); + if (!isTable) { + fEl.innerHTML = 'Нетабличный угол — точных значений нет, см. приближённые выше.'; + } else { + const reduce = (s.quadrant !== 1) && (beta === 30 || beta === 45 || beta === 60); + let head = ''; + if (reduce) { + const wrap = s.quadrant === 2 ? `180° − ${beta}°` : s.quadrant === 3 ? `180° + ${beta}°` : `360° − ${beta}°`; + head = `
${degR}° = ${wrap} → приведение к ${beta}°
`; + } + const sgStr = v => (v !== undefined && v < -1e-9) ? '−' : ''; + const line = (nm, color, val) => { + const mid = reduce ? ` = ${sgStr(val)}${nm} ${beta}°` : ''; + return `
` + + `${nm} ${degR}°${mid}${_f(val)}
`; + }; + fEl.innerHTML = head + line('sin', '#EF476F', s.sin) + line('cos', '#06D6E0', s.cos) + + line('tg', '#FFD166', s.tan) + line('ctg', '#7BF5A4', s.cot); + } + } + // Stats bar (nice fractions) document.getElementById('trigbar-angle').textContent = degStr; document.getElementById('trigbar-sin').textContent = _f(s.sin); diff --git a/frontend/labs-bodies.html b/frontend/labs-bodies.html index b7cebcf..9a4ed74 100644 --- a/frontend/labs-bodies.html +++ b/frontend/labs-bodies.html @@ -578,6 +578,10 @@
+ +
Точные значения · приведение
+
+
Табличные углы