Консультация № 173561
22.10.2009, 15:44
0.00 руб.
0 1 1
Изобразить на экране прямоугольник, вращающийся вокруг одной из своих вершин.

Обсуждение

давно
Профессор
401888
1232
23.10.2009, 07:49
общий
это ответ
Здравствуйте, смирнов артем владимирович!
Решение задачи в приложении.

Приложение:
uses crt,graph;
{Поворот точки вокруг цнтра х0,у0 на а градусов}
procedure Vrash(a:real;var x,y:integer;const x0,y0:integer);
var px:integer;
begin
x:=x-x0;
y:=y-y0;
a:=a*pi/180;
px:=x;
x:=round(x*cos(a)-y*sin(a))+x0;
y:=round(y*cos(a)+px*sin(a))+y0;
end;
const Width=150; {размеры прямоугольника}
Haight=120;
var gd,gm:integer;{параметры входа в граф. режим}
ch:char; {символ для выхода из программы}
ax,ay,bx,by,cx,cy,dx,dy:integer;{заданные координаты 4х точек}
tbx,tby,tcx,tcy,tdx,tdy:integer;{текущие координаты 3х вращающихся точек}
a:real; {угол поворота}
begin
initgraph(gd,gm,'');
{начальное положение прямоугольника}
ax:=GetmaxX div 2;ay:=GetmaxY div 2;
bx:=ax+Width;by:=ay;
cx:=ax+Width; cy:=ay+Haight;
dx:=ax; dy:=ay+Haight;
a:=0;
outtextxy(300,20,'Vyhod Esc...');
repeat
delay(10);{задержка, можно менять}
setfillstyle(solidfill,0);
Bar(0,40,640,480);{очищаем область анимации}
tbx:=bx;tby:=by;Vrash(a,tbx,tby,ax,ay);{определяем текущие координаты}
tcx:=cx;tcy:=cy;Vrash(a,tcx,tcy,ax,ay);
tdx:=dx;tdy:=dy;Vrash(a,tdx,tdy,ax,ay);
setcolor(4);{цвет линий}
moveto(ax,ay);{рисуем 4 линии}
lineto(tbx,tby);
lineto(tcx,tcy);
lineto(tdx,tdy);
lineto(ax,ay);
a:=a+1;{увеличиваем угол}
if keypressed then
ch:=readkey;
until ch=#27; {выход по нажатию Esc}
end.
Форма ответа