Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2010, 20:36   #11
Howaito Enjeru
 
Аватар для Howaito Enjeru
 
Регистрация: 08.05.2010
Сообщений: 9
По умолчанию

Код:
gr=((n-2)*3.14/n)
R=10;\\к примеру длина стороны равна 10
for (i=0; i<n; i++)\\ лучше не используй в условиях <= >= они чучка медленне, чем < > ;)
{
      yn=cos(gr)*R+oldy;
      xn=sin(gr)*R+oldx;
      line(oldx,oldy,xn,yn);
      oldx=xn;
      oldy=yn;
      gr+=(double) 360/n;
}
как-то так
Попробуй должно заработать
Каждый из нас звезданутый по-своему - это и делает нас личностями
Howaito Enjeru вне форума Ответить с цитированием
Старый 08.05.2010, 23:31   #12
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Взял вот отсюда: http://festival.1september.ru/articles/211902/
Есстественно, что по заданному числу сторон можно построить бесконечное множество правильных многоугольников. Для однозначного определения необходим еще и Радиус описанной вокруг ( или вписанной в) многоугольника окружности.


Построить правильный многоугольник с заданным числом сторон.

Решение.

Центр многоульника совмещаем с центром экрана. Пусть N – число его сторон. Центральный угол стороны Angle=2 * Pi / N. Начальную вершину многоугольника поместим на горизонтальной оси (правее центра). Угол наклона i-й вершины к оси Х составляет Angle * i, а ее центральные координаты X, Y –

X = round (R*cos(Angle*i));
Y = round (R*sin(Angle*i));

Где R – радиус описанной окружности.

Проводим i-ю сторону, соединяя линией найденную i-ю и предыдущую вершины. Выполнив это построение для всех i от 1 до N, получим наш многоугольник. (Отметим, что N-я вершина совпадает с начальной .)

{ Построение правильного многоугольника с N сторонами}
uses graph, crt;
Const
PrD:real=80; { Длина диаметра описанной окружности в % от высоты экрана}
PATH=’’; { файлы *.BGI находятся в рабочем каталоге}
Var
W,H,gd,gm,i,N,X,Y.R:integer;
Angle:real;
{ переход от центральных координат к экранным}
procedure WH (var W,H:integer); { ширина и высота экрана}
begin
{ функция GetMaxX и GetMaxY возвращают максимальные значения соответствующих экранных координат}
W:=( GetMaxX+1); { ширина}
H:=( GetMaxY+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(PrD*0.01/*H/2); { радиус описанной окружности}
Angle :=2*pi/N; { центральный угол стороны в радиусах}
MoveTo (Xscr(R), Yscr(0)); { первая вершина в экранных координатах}
SetColor (Yellow); { цвет многоугольника - желтый}
For i:=1 to N do begin {цикл сторон}
{X и Y – центральные координаты очередной вершины}
X:=round (R*cos(Angle*i));
Y:= round (R*sin(Angle*i));
{проводим очередную сторону}
LineTo (Xscr(X), Yscr(Y));
End; {цикл сторон}
Repeat until keypressed; { выход – нажатием любой клавиши}
CloseGraph; { переход в текстовый режим}
End.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЕГЭ (Логика) Xcopy Помощь студентам 6 07.02.2010 18:59
Математическая логика newum44 Помощь студентам 0 24.01.2010 10:08
Женская логика... Mr.Qwerty Свободное общение 23 28.07.2009 11:30
Бизнес - логика Lyubov1990 Microsoft Office Excel 3 09.06.2009 19:27
Логика монстра(ов) ChukCha Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 19.08.2008 15:31