Нарисовать квадрат который в каждый момент своего движения касается одной из сторон к кругу с центром в центре экрана - Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите парни , отакое задание "нарисовать квадрат который в каждый момент своего движения касается одной из сторон к кругу с центром в центре екрана" , заранее спасибо

Решение задачи: «Нарисовать квадрат который в каждый момент своего движения касается одной из сторон к кругу с центром в центре экрана»

textual
Листинг программы
 uses crt,graph;
{процедура вращения точки вокруг центра}
procedure Vrash(a:real;var x,y:integer;const centrx,centry:integer);
var px:integer;
begin
x:=x-centrx;
y:=y-centry;
a:=a*pi/180;
px:=x;
x:=round(x*cos(a)-y*sin(a))+centrx;
y:=round(y*cos(a)+px*sin(a))+centry;
end;
var gd,gm:integer;
    ch:char;
    tx,ty,ax,ay,bx,by,cx,cy,dx,dy:integer;
    tax,tay,tbx,tby,tcx,tcy,tdx,tdy:integer;
    w,h,r:integer;
    a:real;
begin
gd:=0;
initgraph(gd,gm,'');
outtextXY(50,20,'Vyhod - Esc');
r:=150; {радиус окружности}
w:=80; {сторона квадрата}
tx:=getmaxX div 2;ty:=getmaxY div 2; {центр экрана}
{координаты вершин квадоата}
ax:=tx-r;ay:=ty-(w div 2);
bx:=ax-w;by:=ay;
cx:=ax-w; cy:=ay+w;
dx:=ax; dy:=cy;
dx:=ax; dy:=cy;
Setcolor(12);
Circle(tx,ty,r-1);{окружность}
a:=0;
repeat
{в цикле меняем координаты вершин, соединяем их линиями}
tax:=ax;tay:=ay;Vrash(a,tax,tay,tx,ty);
tbx:=bx;tby:=by;Vrash(a,tbx,tby,tx,ty);
tcx:=cx;tcy:=cy;Vrash(a,tcx,tcy,tx,ty);
tdx:=dx;tdy:=dy;Vrash(a,tdx,tdy,tx,ty);
setcolor(11);
moveto(tax,tay);
lineto(tbx,tby);
lineto(tcx,tcy);
lineto(tdx,tdy);
lineto(tax,tay);
{делаем задержку и все стираем(рисуем цветом фона)}
delay(10);
setcolor(0);
moveto(tax,tay);
lineto(tbx,tby);
lineto(tcx,tcy);
lineto(tdx,tdy);
lineto(tax,tay);
a:=a+1;{увеличиваем угол поворота}
if keypressed then
ch:=readkey;
until ch=#27;
end.

Объяснение кода листинга программы

  1. Используется библиотека crt для работы с графикой и функция initgraph для инициализации графического окна.
  2. Создается процедура Vrash, которая вращает точку вокруг центра.
  3. Определяются переменные gd и gm для работы с графикой.
  4. Определяются переменные ch, tx, ty, ax, ay, bx, by, cx, cy, dx, dy для работы с координатами.
  5. Определяется переменная a для хранения угла поворота.
  6. В цикле рисуются линии между вершинами квадрата и окружностью.
  7. После каждой итерации меняется угол поворота и обновляются координаты вершин.
  8. При нажатии клавиши считывается символ и цикл прерывается.
  9. В конце программы сбрасывается цвет фона и выводятся координаты вершин.
  10. Программа завершается при нажатии клавиши Esc.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы