Лекция: Приклад. Побудувати правильний 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.


еще рефераты
Еще работы по информатике