Анимация Анимация - компьютерная имитация движения с помощью изменения (и перерисовки) формы объектов или показа последовательных изображений с фазами.

Презентация:



Advertisements
Похожие презентации
Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
Advertisements

Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
Имитация движения в Турбо Паскале. Наиболее простой способ имитации движения на экране Задание позиций вывода Вывод объекта определённым цветом («рисование»)
Тема урока Анимация в Pascal ABC. n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка.
1 Программирование на языке Паскаль Графика. 2 Система координат (0,0) (x,y)(x,y) X Y x y.
Исследование физических моделей. Движение тела, брошенного под углом к горизонту. Бросание мяча в площадку 1.
Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
Создание движущихся объектов. USES Graph; VAR x, Device, Mode: Integer; BEGIN Device:=0; InitGraph(Device, Mode, ); ReadLn; x:=40; repeat SetColor(White);
Создание анимации в среде Turbo Pascal на примере анимированной модели стрелочных часов Исследовательская работа Ученицы 10 « Б » класса Андрук Алены Научный.
Program show; User CRT, Graph; const N=1000; var X, Y:array [1..N] of integer; Gd, Gm, xm, ym, i:integer; begin Gd:=0; Initgraph (Gd, Gm, ); xm:=getmaxX;
Построение точки и отрезков прямых. Для построения точки служит процедура PutPixel(X,Y, цвет) Для построения точки служит процедура PutPixel(X,Y, цвет)
Циклы в языке программирования Pascal
БИБЛИОТЕКА CRT Turbo Pascal 7.0. Команды библиотеки CRT Очистка экрана Цвет символов Цвет фона Курсор Режим Задержка Звук Очистка строки Удаление строки.
Задание графического режима Линия Прямоугольник Окружность Эллипс Дуга выход Тест 2Тест 1 содержание.
Урок по теме : «Введение в графику в языке программирования Turbo Pascal» Автор: Казначей, учитель информатики Urok-informatiki.ru.
Проверка домашнего задания Приведите различные примеры графических информационных моделей. Приведите различные примеры графических информационных моделей.
Модуль GraphМодуль GraphИнициализация и завершение гpафического режима InitGraph (driver, mode : integer; path : string); При driver:=detect включается.
Операторы ветвления. Ветвление - такая форма организации действий, при которой в зависимости от выполнения некоторого условия совершается одна или другая.
1 Программирование на языке Паскаль Тема 11. Анимация © К.Ю. Поляков,
Free Pascal - свободно распространяемый в исходных текстах кроссплатформенный компилятор языка Pascal. Алгоритмический язык Интегрированная среда программирования.
Транксрипт:

Анимация Анимация - компьютерная имитация движения с помощью изменения (и перерисовки) формы объектов или показа последовательных изображений с фазами движения.

Анимация с использованием видеостраниц SetActivePage(n); - устанавливает активную видеостраницу SetVisualPage(n); - устанавливает отображаемую (видимую) видеостраницу Нумерация видеостраниц с 0.

Алгоритм анимации с использованием видеостраниц 1)рисуем первую фазу на одной видеостранице 2)рисуем вторую фазу на другой видеостранице 3)показываем первую видеостраницу 4)ждём 5)показываем вторую видеостраницу 6)ждём 7)переходим на шаг 3

Видеостраница 0

Видеостраница 1

Процедура Delay (задержка) delay(ms); - задерживает выполнение программы на ms миллисекунд 1 мс = 1/1000 с На современных компьютерах delay(1000) задержке на 1 с Процедура delay расположена в модуле CRT.

uses crt, graph; var … procedure DrawMan1; … { первый чел. } procedure DrawMan2; … { второй чел. } begin InitGraph …; DrawMan1; SetActivePage(1); DrawMan2; repeat delay(5000); SetVisualPage(1); delay(5000); SetVisualPage(0); until keypressed; while keypressed do readkey; CloseGraph; end.

uses crt, graph; var p: byte; … procedure DrawMan1; … { первый чел. } procedure DrawMan2; … { второй чел. } begin InitGraph …; DrawMan1; SetActivePage(1); DrawMan2; p:=0; repeat delay(5000); if p=0 then p:=1 else p:=0; SetVisualPage(p); until keypressed; while keypressed do readkey; CloseGraph; end. p:=(p + 1) mod 2;

Анимация движущихся объектов Алгоритм анимации: 1)рисуем объект в точке (x, y) 2)ждём 3)стираем объект в точке (x, y) 4)изменяем координаты (x, y) 5)переходим к шагу 1

uses crt, graph; var … begin InitGraph …; for x:=0 to GetMaxX do begin setcolor(15); circle(x,50,10); delay(5000); setcolor(0); circle(x,50,10); end; CloseGraph; end.

uses crt, graph; var … begin InitGraph …; for x:=0 to GetMaxX div 5 do begin setcolor(15); circle(x*5,50,10); delay(5000); setcolor(0); circle(x*5,50,10); end; CloseGraph; end.

(0; 0) (GetMaxX; GetMaxY) (x; y)

uses crt, graph; var … begin InitGraph …; for x:=0 to GetMaxX div 5 do begin setcolor(15); circle(x*5,round(GetMaxY/GetMaxX*x*5),10); delay(5000); setcolor(0); circle(x*5,round(GetMaxY/GetMaxX*x*5),10); end; CloseGraph; end.

Режимы вывода линий Режим Первонача льный цвет Новый цветРезультат NormalPut XORPut

Установка режима вывода линий SetWriteMode(mode); mode: NormalPut, XORPut, ANDPut, ORPut

uses crt, graph; var … begin InitGraph …; SetWriteMode(XORPut); setcolor(15); for x:=0 to GetMaxX div 5 do begin circle(x*5,50,10); delay(5000); circle(x*5,50,10); end; CloseGraph; end.

Анимация вращения линий

Полярная система координат и её связь с прямоугольной СК x y a r y x x = r * cos(a) y = r * sin(a) 0

uses crt, graph; var a: integer; begin InitGraph …; SetWriteMode(XORPut); setcolor(15); for a:=0 to 360 do begin line(GetMaxX div 2, GetMaxY div 2, GetMaxX div 2 + round(100*cos(a*pi/180)), GetMaxY div 2 – round(100*sin(a*pi/180))); delay(5000); line(GetMaxX div 2, GetMaxY div 2, GetMaxX div 2 + round(100*cos(a*pi/180)), GetMaxY div 2 – round(100*sin(a*pi/180))); end; CloseGraph; end.

Системная дата и время GetTime(h,m,s,s100); SetTime(h,m,s,s100); GetDate(y,m,d,dw); SetDate(y,m,d); Модуль DOS dw: 0 – Sunday 1 – Monday 2 – Tuesday 3 – 4 – Thursday 5 – Friday 6 - Saturday

uses crt, graph, dos; var h,m,s,s100,h1,m1,s1: word; Procedure DrawWatch; { рисование циферблата } Procedure DrawSecHand(s: word); begin line(GetMaxX div 2, GetMaxY div 2, GetMaxX div 2 + round(150*cos((90-6*s)*pi/180)), GetMaxY div 2 – round(150*sin((90-6*s)*pi/180))); end; Procedure DrawMinHand(m: word); { рисование мин. стр} Procedure DrawHourHand(h,m: word); begin line(GetMaxX div 2, GetMaxY div 2, GetMaxX div 2 + round(50*cos((90-h*30-m*0.5)*pi/180)), GetMaxY div 2 – round(50*sin((90-h*30-m*0.5)*pi/180))); end;

begin InitGraph …; DrawWatch; SetWriteMode(XORPut); GetTime(h,m,s,s100); DrawHourHand(h,m); DrawMinHand(m); DrawSecHand(s);

repeat GetTime(h1,m1,s1,s100); if s1s then begin DrawSecHand(s); if m1m then begin DrawMinHand(m); DrawHourHand(h,m); h:=h1; m:=m1; DrawHourHand(h,m); DrawMinHand(m); end; s:=s1; DrawSecHand(s); end; until keypressed; CloseGraph; End.