Сообщение от Teamur
|
Там радианы меняются, а надо как-то получать координаты вершин
|
Так они не произвольно меняются, а все время на один и тот же угол.
Синусы косинусы достаточно один раз вычислить
<body>
<label>Количество вершин: <input id="nu" type="number" min="3" value=3></label>
<button id="p2">Построить</button>
<br>
<svg width="410" height="410" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="205" cy="205" r="200" stroke="black" fill="transparent" stroke-width="1"/>
<polygon id="mnog" stroke="red" fill="transparent" stroke-width="1"/>
</svg>
<script>
const cx = 205
const cy = 205
const R = 200;
const draw = (mnog) => document.getElementById('mnog').setAttribute('points', mnog.flat())
const mnogoug = (n) => {
const a = Math.PI*2/n;
const sa = Math.sin(a)
const ca = Math.cos(a)
let sc = 0.;
let cc = 1.;
const mnog = []
for (let i=0; i< n; i++) {
mnog.push([R*cc+cx, R*sc+cy])
let tsc = sc;
sc = sc*ca+cc*sa;
cc = cc*ca-tsc*sa;
}
return mnog
}
document.getElementById('p2').addEventListener('click', () => {
const n = document.getElementById('nu').valueAsNumber;
mnog = mnogoug(n)
draw(mnog)
})
</script>
</body>