- Информатика
- решить задачу в PascalABC.Net
решить задачу в PascalABC.Net Нужно чтобы 3 окружности вращались вместе как показано на изображении.
Есть наработка программы:
Uses GraphABC;
Const
r1 = 18; { радиус }
w1 = -0.035; { угловая скорость }
w2 = -0.034; { угловая скорость }
w3 = -0.033; { угловая скорость }
o1 = 180; { радиус вращения }
Var
x,y,t:integer;
begin
setwindowsize(900,600); {размер окна}
x:=450; y:=300; {центр окна}
lockdrawing; {рисование во внеэкранном буфере}
setpenwidth(2);
t := 0;
repeat
clearwindow; {очищение окна}
DrawCircle(450, 300, 200);
DrawCircle(450, 300, 160);
DrawCircle(450, 300, 120);
DrawCircle(450, 300, 80);
t:=t+1;
setbrushcolor(clLime); {время движения }
circle(x + round(o1 * cos(t*w1)), y - round(o1 * sin(t*w1)), r1);
setbrushcolor(clSkyBlue);
circle(x + round(o1 * cos(t*w2)), y - round(o1 * sin(t*w2)), r1);
setbrushcolor(clPurple);
circle(x + round(o1 * cos(t*w3)), y - round(o1 * sin(t*w3)), r1);
sleep(1); {задержка}
redraw; {формирование нового кадра}
until False;
end.
Объяснение:= 18; { радиус }
w1 = -0.035; { угловая скорость }
w2 = -0.034; { угловая скорость }
w3 = -0.033; { угловая скорость }
o1 = 180; { радиус вращения }
Var
x,y,t:integer;
begin
setwindowsize(900,600); {размер окна}
x:=450; y:=300; {центр окна}
lockdrawing; {рисование во внеэкранном буфере}
setpenwidth(2);
t := 0;
repeat
clearwindow; {очищение окна}
DrawCircle(450, 300, 200);
DrawCircle(450, 300, 160);
DrawCircle(450, 300, 120);
DrawCircle(450, 300, 80);
t:=t+1;
setbrushcolor(clLime); {время движения }
circle(x + round(o1 * cos(t*w1)), y - round(o1 * sin(t*w1)), r1);
setbrushcolor(clSkyBlue);
circle(x + round(o1 * cos(t*w2)), y - round(o1 * sin(t*w2)), r1);
setbrushcolor(clPurple);
circle(x + round(o1 * cos(t*w3)), y - round(o1 * sin(t*w3)), r1);
sleep(1); {задержка}
redraw; {формирование нового кадра}
until False;
end.