Создание анимации в среде Turbo Pascal на примере анимированной модели стрелочных часов Исследовательская работа Ученицы 10 « Б » класса Андрук Алены Научный.

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



Advertisements
Похожие презентации
Исследование физических моделей. Движение тела, брошенного под углом к горизонту. Бросание мяча в площадку 1.
Advertisements

Анимация Анимация - компьютерная имитация движения с помощью изменения (и перерисовки) формы объектов или показа последовательных изображений с фазами.
Тема урока Анимация в Pascal ABC. n:= LoadPicture (name) – загружает рисунок из файла с именем name в оперативную память и возвращает описатель рисунка.
Задание графического режима Линия Прямоугольник Окружность Эллипс Дуга выход Тест 2Тест 1 содержание.
Урок информатики 9 физико-математический класс.
Урок по теме : «Введение в графику в языке программирования Turbo Pascal» Автор: Казначей, учитель информатики Urok-informatiki.ru.
1 Программирование на языке Паскаль Графика. 2 Система координат (0,0) (x,y)(x,y) X Y x y.
Циклы в языке программирования Pascal
«Графические возможности языка программирования Паскаль»
ГРАФИЧЕСКИЙ РЕЖИМ Turbo Pascal 7.0. Графические операции Система координат Инициализация Изображение точек Изображение линий Закрашенные фигуры Вывод.
1 Графика в Pascal Модуль Graph. 2 Подключение дополнительных библиотек Для работы в графическом режиме необходимо подключение модуля Graph. Первой инструкцией.
Язык программирования Pascal. Структура программы Pascal Program имя программы; Uses раздел подключения модулей; Const раздел констант; Var раздел описаний.
Алфавит языка TURBO PASCAL. Цель урока: Узнать: Алфавит языка программирования TURBO PASCAL. Этапы разработки программы Типы ошибок Разделы программы.
Функции в Turbo Pascal Шутилина Л.А.
Проверка домашнего задания Приведите различные примеры графических информационных моделей. Приведите различные примеры графических информационных моделей.
Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
Графика в Turbo Pascal ГБОУ СПО «КСТ», г. Калуга преподаватель Шамрина Ольга Николаевна.
Модуль GraphМодуль GraphИнициализация и завершение гpафического режима InitGraph (driver, mode : integer; path : string); При driver:=detect включается.
Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
1 Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
Транксрипт:

Создание анимации в среде Turbo Pascal на примере анимированной модели стрелочных часов Исследовательская работа Ученицы 10 « Б » класса Андрук Алены Научный руководитель: Баскакова Н.В. Санкт - Петербург 2009 г.

Целью данной работы является моделирование объекта «часы» в среде программирования Turbo Pascal. Для реализации главной цели было необходимо освоить вне учебной программы графические операторы и технологии создания движущихся изображений в среде Turbo Pascal, поэтому при выполнении этой работы рассмат- ривались и такие цели, как расширение знаний по курсу программирования на Паскале и совершенствования навыков написания и отладки программ. Цель работы

ЭТАПЫ МОДЕЛИРОВАНИЯ III этап: Компьютерный эксперимент 1. Описание задачи 2. Цель моделирования 3. Описание объекта или процесса 4. Анализ объекта II этап: Разработка модели 5. Разработка информационной модели 6. Разработка математической модели 7. Разработка компьютерной модели IV этап: Анализ результатов моделирования

Постановка задачи Задача: Программа «Часы» должна выводить изображение циферблата с движущимися стрелками (часовой, минутной, секундной).

Выбор входных и выходных данных Входные данные: R радиус циферблата; X0, Y0 координаты центра циферблата; d размер временной задержки для демонстрации модели в реальном времени d=1000 ms = 1 сек., для демонстрации модели в ускоренном режиме d=10000 ms; t время показа анимации; hour, min, sec углы определяющие положение часовой, минутной, секундной стрелок. h, m, s значения, характеризующие текущий момент времени (количество часов, минут, секунд). Выходные данные: Анимированное изображение.

Математическая модель 1.Определение положения стрелок Положение стрелок на циферблате определяется следующими формулами: Шаг минутной и секундной стрелок равен 6 0, поэтому: Угол положения минутной и секундной стрелок определяется по формулам: Min:=90 - m*6; Sec:=90 - s*6; Угол положения часовой стрелки определяется количеством часов и минут: Hour:=90 - h*30 - (mdiv12)*6, где (h*30)-угол определяемый кол-вом часов. (mdiv12)*6 – угол между соседними значениями часов

2. Рисование циферблата. Для создания изображения циферблата необходимо нарисовать: 1.Белую закрашенную окружность радиусом R+40; 2.Синюю окружность радиусом R, вдоль которой будет размещаться шкала делений; 3.Маленькую синюю закрашенную окружность радиусом R=5 в центре циферблата; 4.Линии шкалы делений – 60 делений для отсчета минут (секунд), причем каждый пятый отрезок имеет большую длину и толщину, чем основные деления; 5.Вывести цифры часов напротив каждого пятого деления шкалы. Математическая модель

Координаты начала и конца каждого отрезка линии шкалы делений определяются по формулам: x1:=x0+0.96*r*cos(sec); y1:=y0-0.96*r*sin(sec); x:=x0+r*cos(sec); y:=y0-r*sin(sec); Для каждого пятого деления координаты начала отрезка линии определяются по формулам: x1:= x0+0.93*r*cos(sec); y1:= y0-0.93*r*sin(sec); Координаты начала поля вывода цифр часов определяются по формулам: x2:= x0+1.1*r*cos(sec)-11; y2:= y0-1.1*r*sin(sec)-14; Математическая модель

3. Рисование стрелок Длина часовой стрелки: Lh:=0,6*R Длина минутной стрелки: Lm:=0,8*R Длина секундной стрелки: Ls:=0,8*R Координаты концов линий-стрелок X и Y определяются координатами центра циферблата X0,Y0, длиной стрелки и углом ее наклона: : X:=Round(X0+L*cos (UGOL*2*Pi/360)); Y:=Round(Y0-L*sin (UGOL*2*Pi/360)); Где: L – длина стрелки UGOL - угол положения стрелки (подставляются значения углов часовой, минутной или секундной стрелки - hour, min, sec) Математическая модель

4. Реализация анимированного изображения. 1.Сначала рисуется циферблат, который в дальнейшем остается неизменным. 2.Создание эффекта движения в Паскале реализуется следующим образом: В каждый текущий момент(шаг = 1 сек) рисуются черным цветом секундная, минутная и часовая стрелки. После временной задержки, 1000 миллисекунд =1секунде, стрелки рисуются еще раз, но цвет линии белый. Тем самым исходное изображение стирается. Рисуется новое положение стрелок. Математическая модель

Компьютерный эксперимент Программа «Стрелочные часы» program chasy; uses graph, crt; {ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ} var r,s,ss,m,h,x0,y0,x,y,x1,y1,x2,y2,n,t,tmax,d,driver,mode:integer; k: string[2]; ls, lm, lh, sec, ssec, min, hour : real; {r - радиус, x0, y0 – координаты центра, x, y, x1, y1 – координаты отрезков делений шкалы циферблата, x2, y2 – координаты цифр циферблата, s – количество секунд, sec – угол секундной стрелки, m – количество минут, min – угол минутной стрелки, h – количество часов, hour – угол часовой стрелки, ls, lm, lh – длины секундной, минутной и часовой стрелок, n – счетчик цифры циферблата, k - текст цифры циферблата, d – временная задержка, tmax время показа анимации;

{ПРОЦЕДУРА РИСОВАНИЯ СТРЕЛОК} Procedure strelka (ugol,dlina:real); Var x,y:integer; begin x:=Round(x0+dlina*cos(ugol*pi/180)); y:=Round(y0-dlina*sin(ugol*pi/180)); Line(x,y,x0,y0); end; {НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ} begin writeln('vvedite chas: h='); readln(h); writeln('vvedite minuty: m='); readln(m); writeln('vvedite secundy: ss='); readln(ss); writeln('vvedite vremya zaderzhki (1000) d='); readln(d); writeln('vvedite vremya pokaza (1800,3600 ili 7200) tmax='); readln(tmax); r:=180; x0:=320; y0:=240; driver:=0; mode:=0; initgraph(driver,mode,'c:/bp/bgi'); cleardevice;

{РИСОВАНИЕ ЦИФЕРБЛАТА} setbkcolor(blue); setcolor(white); {циферблат – белая закрашенная окружность} setfillstyle(solidfill, white); fillellipse(x0,y0,r+40,r+40); {синяя окружность внутри белой закрашенной окружности} setcolor(blue); ellipse(x0,y0,0,360,r,r); {маленькая синяя закрашенная окружность в центре циферблата} setfillstyle(solidfill,blue); fillellipse(x0,y0,5,5); sec:=0;n:=0; {рисование делений шкалы циферблата} for s:=0 to 59 do BEGIN sec:=(90-s*6)*pi/180; x:=Round(x0+r*cos(sec)); y:=Round(y0-r*sin(sec)); x1:=Round(x0+0.96*r*cos(sec)); y1:=Round(y0-0.96*r*sin(sec)); setlinestyle(SolidLn,0,1);

{рисование каждого пятого деления шкалы циферблата более длинным и с большей толщиной линии} if s mod 5 = 0 then begin x1:=Round(x0+0.93*r*cos(sec)); y1:=Round(y0-0.93*r*sin(sec)); setlinestyle(SolidLn,0,3); {вывод текста цифр циферблата} x2:=Round(x0+1.1*r*cos(sec)-11); y2:=Round(y0-1.1*r*sin(sec)-14); if s=0 then k:='12' else begin n:=n+1; Str(n:2,k); end; end; Settextstyle(1,horizdir,1); OuttextXY(x2,y2,k); Line(x,y,x1,y1); end; {ДВИЖЕНИЕ СТРЕЛОК} ls:=0.85*r; lm:=0.8*r; lh:=0.6*r; for t:=0 to tmax do begin ssec:=90-ss*6; min:=90-m*6; hour:=90-h*30-(m div 12)*6; {рисование стрелок} setcolor(blue); setlinestyle(0,0,3); strelka(min,lm); strelka(hour,lh); setlinestyle(0,0,1); strelka(ssec,ls);

{временная задержка} delay(d); setcolor(white); setlinestyle(0,0,3); strelka(min,lm); strelka(hour,lh); setlinestyle(0,0,1); strelka(ssec,ls); setfillstyle(solidfill,blue); fillellipse(x0,y0,5,5); {задание нового значения секунд (минут, часов)} ss:=ss+1; if (ss div 60)=1 then begin ss:=0; m:=m+1;end; if (m div 60)=1 then begin m:=0; h:=h+1;end; end; {рисование стрелок по завершении показа анимации – чтобы изображение часов на экране не пропадало} setcolor(blue); setlinestyle(0,0,3); strelka(min,lm); strelka(hour,lh); setlinestyle(0,0,1); strelka(ssec,ls); readln; end.

Анализ результатов моделирования Написанная мной программа выводит на экран компьютера стрелочные часы. Но, чтобы данные часы шли точно, показывали реальное время, необходимо произвести их калибровку. На практике временные интервалы при демонстрации анимации зависят от тактовой частоты работы компьютера, поэтому калибровку данной модели на каждом компьютере приходится осуществлять в ручную. В Delphi существует специальная функция «Timer», считывающая текущее значение времени с таймера компьютера, что дает возможность создания модели часов с точным соответствием времени реальному.

1.Культин Н.Б Turbo Pascal в задачах и примерах. СПб.: BHV, Культин Н.Б Delphi в задачах и примерах. СПб.: BHV, Макарова Н.В. Информатика. Учебник для 7-9 кл. СПб.: Питер, Меженный О.А. Turbo Pascal. M., СПб., Киев: Диалектика, все, что связано с компьютерной графикой, обработкой изображений и мультимедиа Список литературы