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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2008, 20:33   #1
Teh
Новичок
Джуниор
 
Регистрация: 19.04.2008
Сообщений: 2
По умолчанию Помогите решить простую задачу

Первый раз с этим сталкиваюсь. Не знаю с чего начать. Может кто поможет объяснит, подскажет.
Задача такая: Нарисовать правильный многоугольник с задаваемым числом вершин.
Teh вне форума Ответить с цитированием
Старый 19.04.2008, 20:51   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Обсуждали много раз.
Кусок который создаёт массив координат вершин многоугольника по которым и надо строить.

Код:
Const Pi = 3.1415926;   
  
Var GV : array [1..10, 1..10] of Real;   
      i, n, R: Integer;   
      a : Real;   
  
Begin   
a := 0;   
R := 30; // Radius   
Readln (n);   
  
For i := 1 To n Do   
  Begin   
    GV[i,1] := R * cos(a * Pi/180);   
    GV[i,2] := R * sin(a * Pi/180);   
    a := a + 360/n;   
  End;   
  
Readln;   
End.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 19.04.2008, 21:06   #3
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Ну и чтоб уж тему закрыть добавим:
Const Pi = 3.1415926;

Var GV : array [1..10, 1..10] of Real;
i, n, R: Integer;
a : Real;

Begin
a := 0;
R := 30; // Radius
Readln (n);

For i := 1 To n Do
Begin
GV[i,1] := R * cos(a * Pi/180);
GV[i,2] := R * sin(a * Pi/180);

LineTo(GV[i,1] ,GV[i,2]);
MoveTo(GV[i,1] ,GV[i,2]);

a := a + 360/n;
End;

Readln;
End.
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 19.04.2008, 21:22   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Я бы использовал другой формат для массива с координатами вершин и начертил многоугольник, как Polygon(GV) для которого просто изменяется и заливка (brush)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  GV: array of TPoint;
  R,a: double;
  n,i,x0,y0: integer;
begin
  x0:=100; y0:=100; R:=50;
  n:=6;
  SetLength(GV,n);
  a:=0;
  for i:=0 to n-1 do
    begin
      GV[i]:=point(x0+round(R*cos(a)),y0-round(R*sin(a)));
      a:=a+2*pi/n;
    end;
  Canvas.Polygon(GV);
end;
_Dmitry вне форума Ответить с цитированием
Старый 24.04.2008, 07:37   #5
Teh
Новичок
Джуниор
 
Регистрация: 19.04.2008
Сообщений: 2
По умолчанию

Спасибо большое
Teh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу Chuvak Общие вопросы C/C++ 3 07.06.2008 09:48
Помогите решить простую задачу по C++ steal13 Общие вопросы C/C++ 6 03.01.2008 09:40
Помогите решить задачу! Алисик Помощь студентам 1 24.12.2007 01:21
Помогите решить задачу. Shady Общие вопросы Delphi 7 10.11.2007 23:09