Построение правильного многоугольника. Ч 2
http://proza.ru/2024/02/18/1402
В инете есть много способов построения правильных многоугольника. Причем для двух подходов. 1) задана сторона многоугольника "а" и приходится геометрическими построениями находить радиус описанной окружности вокруг многоугольника. 2) задан радиус окружности "R" и требуется определить и построить правильный многоугольник с вершинами на окружности. Абсолютно точного геометрического метода построения правильных фигур не имеется. Все способы приближенные, хотя и визуально довольно точные. Абсолютно точный метод базируется лишь на расчетах координат вершин правильного многоугольника. Тригонометрические формулы вне всякого сомнения абсолютны, поскольку эти координаты можем определять с любой наперед заданной точностью. Программа расчета координат и графики многоугольников показана в первой части. Здесь же, в иллюстрации я привожу точные формулы для расчета координат и примеры, когда многоугольник имеет четное числе вершин и нечетное. Вершины обозначил буквой "k", хотя в проге - буквой "i". Это чтобы не путать со знаком мнимости.
В данном интересном геометрическом исследовании самым сложным оказалось вывод четырёх тригонометрических формул. Выражения под знаками синуса и косинуса нашёл необычным, но оригинальным способом. Методом Монте Карло. Вообще-то это настоящее детективное событие, по следу которого снимал свои действия на камеру. Думаю в дальнейшем опубликовать динамику научных поисков в виде документального рассказа.
Теперь немного суждений. В ютубе показаны буквально десятки способов построения правильных многоугольников. Почти все их лично протестировать циркулем и линейкой. Затратил уйму времени. Например, довольно точное построение 13-тиугольника заняло более часа. Тот же пример бы выполнен по моей пороге за доли секунду и плоттер моментально выдал рисунок на бумаге. И при этом точность размеров оказалась выше. Еще раз копирую текст проги, поскольку сделал несколько упрощений в тригонометрических формулах и рисунок решил делать в 2 раза крупней, заменил в самом начале k на m, а i - на k:
l=500:b=220
R=100:m=2
print "INPUT N = ";
input n
dim x(30),y(30)
print " k x(k) y(k) "
print "--------------------"
for k=0 to n-1
if n/2=int(n/2) then
x(k)=-R*sin(pi/n*(2*k+1))
y(k)=R*cos(pi/n*(2*k+1))
fi
if n/2<>int(n/2) then
x(k)=-R*sin(pi/n*2*k)
y(k)=R*sin(pi/(2*n)*(4*k+n))
fi
print k using "##",x(k) using "####.##";
print y(k) using "####.##"
next k
a=2*R*sin(pi/n)
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 k=0 to n-2
line l+m*x(k),b-m*y(k) to l+m*x(k+1),b-m*y(k+1)
next k
line l+m*x(0),b-m*y(0) to l+m*x(n-1),b-m*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 k=0 to n-1
x0$=str$(x(k),"####.##")
y0$=str$(y(k),"####.##")
text 150,100+20*k,x0$
text 200,100+20*k,y0$
next k
Прога эта уникальная! Если конвертировать ее в удобные для пользователя языки программирования, то будет возможность у школьников и студентов оформить программный продукт в виде подпрограммы и результаты прогонки (то есть рисунок многоугольника и координаты вершин) выводить сразу на электронную классную доску. Долее - уже производить с изображениями различные дополнительные построения. Это займет минимум времени и усилий. Прогресс, так сказать, в области образования.
23 февраля 2024 г.
Свидетельство о публикации №224022301188