Построение правильного многоугольника. Ч 1

Георгий Александров
Часто приходится строить циркулем и линейкой такие правильные фигуры. Известно, что довольно легко строятся равносторонний треугольник, квадрат, шестиугольник, восьмиугольник. Сложней геометрически строятся правильные: пятиугольник, семиугольник, 15-ти и даже 17-ти угольники. Работа требует много времени, аккуратности...
Чтобы задачу на порядки упростить я составил небольшую, но эффективную прогу. Она часто помогает при решении ряда задач, основанных на правильных геометрических фигурах. Ранее я четил лишь приближенные эскизы. Теперь же принтую многоугольник на листе формата А-4 и это сильно облегчает дальнейшие рассуждения. Текст проги:

l=500:b=220
R=100:k=1
print "INPUT  N =  ";
input n
dim x(30),y(30)
print " i   x(i)     y(i) "
print "--------------------"
for i=0 to n-1
if n/2=int(n/2) then
x(i)=-R*sin(pi*(2*i+1)/n)
y(i)=R*cos(pi*(2*i+1)/n)
fi
if n/2<>int(n/2) then
x(i)=-R*sin(2*pi*i/n)
y(i)=R*sin(pi/2+2*pi*i/n)
fi
print i using "##",x(i) using "####.##";
print y(i) using "####.##"
next i
a=2*R*sin(pi/n)
print
print " R = ";:print R using "####.##"
print "a = ";:print a using "####.##"
open window 2*l,2*b
for v=1 to 2
circle l,b,v
next v
for i=0 to n-2
line l+k*x(i),b-k*y(i) to l+k*x(i+1),b-k*y(i+1)
next i
line l+k*x(0),b-k*y(0) to l+k*x(n-1),b-k*y(n-1)
R$=str$(R,"####.##")
a$=str$(a,"####.##")
text 210,50,a$
text 210,30,R$
text 180,50,"a = "
text 180,30,"R = "
text 167,80,"x"
text 220,80,"y"
for i=0 to n-1
x0$=str$(x(i),"####.##")
y0$=str$(y(i),"####.##")
text 150,100+20*i,x0$
text 200,100+20*i,y0$
next i
Здесь R - радиус описанной окружности, а - сторона правильного многоугольника, k-масштабный коэффициент.
Пару часов назад скомпоновал рисунок с правильными многоугольниками 3,4,5,7, а также привёл таблицы с координатами вершин. Размерность - пикселы. При этом везде R=100 пк.


17 февраля 2024 г.

Погиб Алексей Навальный.