Нарисовать квадрат который в каждый момент своего движения касается одной из сторон к кругу с центром в центре экрана - 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.
Объяснение кода листинга программы
- Используется библиотека crt для работы с графикой и функция initgraph для инициализации графического окна.
- Создается процедура Vrash, которая вращает точку вокруг центра.
- Определяются переменные gd и gm для работы с графикой.
- Определяются переменные ch, tx, ty, ax, ay, bx, by, cx, cy, dx, dy для работы с координатами.
- Определяется переменная a для хранения угла поворота.
- В цикле рисуются линии между вершинами квадрата и окружностью.
- После каждой итерации меняется угол поворота и обновляются координаты вершин.
- При нажатии клавиши считывается символ и цикл прерывается.
- В конце программы сбрасывается цвет фона и выводятся координаты вершин.
- Программа завершается при нажатии клавиши Esc.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д