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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2010, 14:42   #1
Belii09878
 
Регистрация: 31.01.2010
Сообщений: 8
Вопрос поворот многоугольника в паскале

подскажите пожалуйста как сделать поворот многоугольника я вот чтото набросал
Код:
program graphic;
uses graph;
var  errorcode : integer; i,j,gd,gm,ygl: integer;
     pp: array[1..8] of PointType;
     pp2: array[1..8] of PointType;
     maxx, maxy,serx,sery:word;

Begin
    ygl:=30;
    gd:=detect;
    initGraph (gd,gm,'e:\egavga');
    errorcode:=graphresult;
    if errorcode<>grok then
 begin
    writeln('Error init Graph');
    closegraph;
    halt;
 end;
    maxx:=GetmaxX; maxy:=GetmaxY;
    serx:=maxx div 2;
    sery:=maxy div 2;

    pp[1].x :=serx-40;
    pp[1].y := sery-20;
    pp[2].x := serx+20;
    pp[2].y := sery-20;
    pp[3].x := serx+20;
    pp[3].y := sery-40;
    pp[4].x := serx+60;
    pp[4].y := sery;
    pp[5].x := serx+20;
    pp[5].y := sery+40;
    pp[6].x := serx+20;
    pp[6].y := sery+20;
    pp[7].x := serx-40;
    pp[7].y := sery+20;
    pp[8] :=pp[1];
    SetColor(8); {цвет для вычерчивания}
    DrawPoly(8,pp);
    floodfill(serx,sery,8);
 for i:=1 to 8 do
 begin
    pp2[i].x:=pp[i].x*sin(ygl)+pp[i].y*cos(ygl);
    pp2[i].y:=pp[i].x*(-cos(ygl))+pp[i].y*sin(ygl);
    i:=i+1;
 end;
  DrawPoly(8,pp2);
    readln;
    CloseGraph;
End.

Последний раз редактировалось Stilet; 25.06.2010 в 14:54.
Belii09878 вне форума Ответить с цитированием
Старый 25.06.2010, 15:26   #2
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Угол в радианах нужно задавать, переведи градусы в радианы, 1 градус примерно 0,017 радиан.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 25.06.2010, 16:00   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

1 градус = 0.0174 радиан
_-Re@l-_ вне форума Ответить с цитированием
Старый 25.06.2010, 16:20   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а ещё лучше, не заниматься "ручным" переводом,
а использовать формулу:
Код:
Radians := angle * Pi / 180;
p.s. PI задавать не надо, это стандартная константа.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение многоугольника по точкам методом треугольников Rin Мультимедиа в Delphi 5 25.04.2010 00:11
Определить видимость грани многоугольника Sergey2 Помощь студентам 4 26.06.2009 20:46
Определение площади многоугольника Bayazet Помощь студентам 5 17.02.2009 12:48
Задача с периметром многоугольника Abakan Общие вопросы C/C++ 1 02.01.2009 19:06
Рисование многоугольника (собственный класс) MaTBeu Общие вопросы C/C++ 1 08.12.2007 14:53