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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 19:31   #1
sef15
Новичок
Джуниор
 
Регистрация: 30.04.2010
Сообщений: 2
По умолчанию АНИМАЦИЯ КАРДИОИДА !

народ помогите написать прогу которая рисует Анимацию кардиоиды ! http://ru.wikipedia.org/wiki/%D0%9A%...B8%D0%B4%D0%B0
(я в паскале вообще не бум бум )
sef15 вне форума Ответить с цитированием
Старый 01.05.2010, 01:31   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Program Cardioid; 
Uses 
   CRT, Graph; 
Const
     n=144; 
     r=200; 
     t=2*pi/n; 
Var 
   x,y: array[1..2*n] of integer; 
   i,d,m:integer; 
Begin 
    d:=detect; m:=detect; 
    InitGraph(d,m,''); 
    SetColor(LightRed); 
    Circle(340,240,r); 
   for i:=1 to n do 
     begin 
        x[i]:=340+round(r*cos(i*t)); 
        y[i]:=240+round(r*sin(i*t)); 
        x[i+n]:=x[i]; 
        y[i+n]:=y[i] 
     end; 
   SetColor(green); 
   for i:=1 to n do 
     line(x[i],y[i],x[i*2],y[i*2]); 
     repeat 
     until KeyPressed; 
     CloseGraph 
End.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 02.05.2010, 19:56   #3
sef15
Новичок
Джуниор
 
Регистрация: 30.04.2010
Сообщений: 2
По умолчанию

спасибо большое ! а что бы картинка двигалась как http://ru.wikipedia.org/wiki/%D0%9A%...B8%D0%B4%D0%B0 тут возможно сделать ?
sef15 вне форума Ответить с цитированием
Старый 02.05.2010, 22:34   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Примерно так.
Код:
uses
   crt, graph;
const
  R = 50;
  Cx = 300;
  Cy = 200;
var
  x0, y0, x1, y1, x, y, gd, gm: integer;
  a: real;
Begin
  gd:=detect;
  initgraph(gd,gm,'');
  a := -pi;
  repeat
    setcolor(black);
    circle(Cx + 2*x, Cy - 2*y, R);//затираем
    line(Cx + 2*x, Cy - 2*y, Cx + x0 + R, Cy - y0);//затираем
    setcolor(white);
    a := a - 0.1;
    circle(Cx, Cy, R);//центральный круг
    x1 := x0; x0 := - round(2 * R * cos(a) * (1 + cos(a)));//координаты кардиоиды
    y1 := y0; y0 := round(2 * R * sin(a) * (1 + cos(a)));
    x :=  - round(R * cos(a));//координаты круга
    y := round(R * sin(a));
    circle(Cx + 2*x, Cy - 2*y, R);//крутящийся круг
    line(Cx + 2*x, Cy - 2*y, Cx + x0 + R, Cy - y0);//радиус
    setcolor(green);
    line(Cx + x1 + R, Cy - y1, Cx + x0 + R, Cy - y0);//ломанная для кардиоиды
    delay(10000)
  until keypressed;
  closegraph
End.
Координаты отрицательные, т.к. y на экране растет вниз. Так что просто вывернул всё симметрично точки (Cx, Cy).
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi: кривая кардиоида Sorinka Помощь студентам 4 19.01.2010 22:16
Кардиоида GaLiof Помощь студентам 0 23.12.2009 16:44
Анимация Belazur Мультимедиа в Delphi 3 09.12.2009 22:36
анимация волшебная Общие вопросы Delphi 0 17.12.2008 21:01
Анимация SanekIrk Общие вопросы Delphi 2 15.08.2008 21:57