Лекция: Приклад. Побудувати правильний N - кутник.
Центр многоугольника сполучаємо з центром екрана. Центральний кут сторони Angle=2*Pi/N. Початкову вершину багатокутника помістимо на горизонтальній осі (праворуч від центра). Кут нахилу i-ої сторони до осі Х складає Angle * i, а її центральні координати – X = round(R*cos(Angle*i)); Y = round (R*sin(Angle*i)); де R – радіус описаного кола.
Проводимо i-ю сторону, з'єднуючи лінією знайдену i-ю і попередню вершини. Виконавши цю побудову для всіх і від 1 до N, одержимо наш багатокутник. (Відзначимо, що N-я вершина збігається з початковою).
program example12;uses graph, crt;
Const
Pr:real=80; { Довжина діаметра описаного кола в % від висоти екрана}
PATH=''; { файли *.BGI знаходяться в робочому каталозі}
Var W,H,gd,gm,i,N,X,Y.R:integer; Angle:real;
{ перехід від центральних координат до екранних}
procedure WH (var W,H:integer); { ширина і висота екрана}
begin
W:=( GetMax+1); { ширина} H:=( GetMax+1); { висота}
end;
Function Xscr (X:integer):integer;
Begin Xscr:=X + W div 2 end;
Function Yscr (Y:integer):integer;
Begin Yscr:=H div 2 – Y end;
BEGIN
repeat
write (' Укажіть число сторін правильного багатокутника, не менш 3');
readln(N);
until N>2;
gd:=DETECT;
initgraph (gd,gm,path);
WH(W,H); { визначаємо ширину і висоту екрана}
R:=round(Pr*0.01/*H/2); { радіус описаної окружності}
Angle :=2*pi/N; { центральний кут сторони в радіусах}
MoveTo (Xscr(R), Yscr(0)); { перша вершина в екранних координатах}
SetColor (Yellow); { колір багатокутника — жовтий}
For і:=1 to N do begin {цикл сторін}
{X і Y – центральні координати чергової вершини}
X:=round (R*cos(Angle*і));
Y:= round (R*sin(Angle*і));
{проводимо чергову сторону}
LineTo (Xscr(X), Yscr(Y));
End; {цикл сторін}
Repeat until keypressed; { вихід – натисканням будь-якої клавіші}
CloseGraph; { перехід у текстовий режим}
End.