Анимация: вращение рисунка - Pascal ABC (13624)
Формулировка задачи:
Помогите сделать вращение треугольника
Решение задачи: «Анимация: вращение рисунка»
textual
Листинг программы
uses graphABC,crt; procedure Vrash(a:real;var x,y:integer;x0,y0,d:integer); begin x:=x0+round(d*cos(a)); y:=y0-round(d*sin(a)); end; var ch:char; x0,y0,d,ax,ay,bx,by:integer; aa,ab:real; begin hidecursor; d:=150; x0:=windowwidth div 2; y0:=windowheight div 2; aa:=-pi/3; ab:=4*pi/3; lockdrawing; repeat clearWindow; Vrash(aa,ax,ay,x0,y0,d); Vrash(ab,bx,by,x0,y0,d); line(x0,y0,ax,ay); line(ax,ay,bx,by); line(x0,y0,bx,by); delay(100); aa:=aa+0.1; ab:=ab+0.1; redraw; until keypressed; readln end.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки graphABC и crt.
- Затем определяется процедура Vrash, которая принимает на вход параметр a типа real, переменные x и y типа integer, а также x0, y0 и d типа integer. Внутри процедуры значения переменных x и y вычисляются по формулам, основанным на тригонометрии.
- Далее определены переменные ch, x0, y0, d, ax, ay, bx, by типа integer. Значения переменных aa и ab типа real инициализируются значениями -π/3 и 4*π/3 соответственно.
- Затем включается режим скрытия курсора hidecursor.
- Вычисляется значение переменной d типа integer, равное 150.
- Значения переменных x0 и y0 типа integer вычисляются как половина ширины и высоты окна соответственно.
- Значения переменных aa и ab типа real инициализируются значениями -π/3 и 4*π/3 соответственно.
- В цикле повторяется следующий набор действий:
- очищается окно clearWindow.
- вызывается процедура Vrash с аргументами aa, ax, ay, x0, y0, d.
- вызывается процедура Vrash с аргументами ab, bx, by, x0, y0, d.
- рисуются линии line с помощью координат x0, y0, ax,ay, bx,by, x0,y0,bx,by.
- задерживается выполнение программы delay на 100 мс.
- значения переменных aa и ab увеличиваются на 0.1.
- выполняется перерисовка окна redraw.
- пока не нажата клавиша keypressed.
- Конец программы.