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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2009, 17:33   #1
random7
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 15
По умолчанию вращение креста на паскале

Помогите разобраться пожалуйста с графикой...
Задание "Вращение креста из двух отрезков линии в центре экрана."

Крест в центре нарисовать не проблема, но как сделать чтобы он вращался допустим по часовой стрелке?
Код:
program lab4_1;
uses crt,graph;
var gdriver, gmode: integer;
BEGIN
     clrscr;
     gdriver := detect;
     initgraph(gdriver,gmode,'');

     setcolor(red);
     setlinestyle(1,0,3);
     line(480,355,540,355);
     line(510,325,510,385);

     readln;
     closegraph;
END.
random7 вне форума Ответить с цитированием
Старый 21.10.2009, 17:53   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

теорему синусов-косинусов еще помните? что-то так...
Код:
for ug:= 0 to 360*kol oborotov do begin
 x:= len*sin(pi*ug/180);
 y:= len*sin(pi*(90-ug)/180));
 line(0,0);
 line(x,y)
end;
даст вам вращающуюся линию, дальше догадаетесь думаю...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 21.10.2009, 18:34   #3
random7
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 15
По умолчанию

У меня получилась вращающаяся линия, теперь проблема в том чтобы добавить вторую.
Никак не пойму как описать координаты для второй линии...
Код:
program lab4;

uses crt,graph;

var gdriver,gmode,x,y,x1,y1,r,d,i: integer;
    t: real;

BEGIN
     clrscr;
     gdriver:=detect;
     initgraph(gdriver,gmode,'');

     x:=getmaxx div 2;
     y:=getmaxy div 2;
     r:=50;
     i:=1;
     d:=100;
     setcolor(red);
     setlinestyle(1,0,3);

    repeat
     t:=i*pi/180;
     x:=round(r*cos(t))+getmaxx div 2;
     y:=round(r*sin(t))+getmaxy div 2;
     x1:=round(r*cos(t+pi))+getmaxx div 2;
     y1:=round(r*sin(t+pi))+getmaxy div 2;
     line(x,y,x1,y1);
     delay(d);
     cleardevice;
     if i<360 then i:=i+1 else i:=1;
    until keypressed;


     readln;
     closegraph;
END.

Последний раз редактировалось random7; 21.10.2009 в 20:55.
random7 вне форума Ответить с цитированием
Старый 22.10.2009, 01:13   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

кто мешает повторить код, но еще 3 раза со сдвигом для каждого на 90гр?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вращение прямоугольника Ponaroshku Паскаль, Turbo Pascal, PascalABC.NET 11 03.11.2009 09:22
Вращение stscolt Помощь студентам 1 08.10.2009 20:39
Вращение параллелепипеда stscolt Помощь студентам 1 29.09.2009 00:30
Рисование креста lordsyrius Мультимедиа в Delphi 6 23.05.2009 19:45
Вращение креста Roberto Помощь студентам 5 03.05.2008 14:07