
- •Часть 1
- •Содержание
- •1 Цель работы
- •2 Зрительное восприятие быстрой смены образов
- •3 Практическое задание
- •4 Синтез динамических эффектов с анализом возможности
- •5 Практическое задание по модификации алгоритма
- •6 Анализ взаимодействия и свойств объектов
- •7 Практическое задание
- •1 Цель работы
- •2 Динамические эффекты с корректировками по условиям
- •3 Практическое задание по модификации алгоритма "Волны"
- •4 Динамические эффекты с анализом состояния процесса
- •6 Синтез простых трехмерных динамических образов
- •7 Практическое задание по модификации алгоритма
- •8 Моделирование динамического процесса с анализом
- •9 Практическое задание
- •1 Цель работы
- •2 Процедуры перемещения и масштабирования фигур
- •3 Практическое задание по отображению сложного движения
- •4 Отслеживание положения и ориентации объекта
- •5 Практическое задание по моделированию движения
- •6 Модификация контурного изображения
- •7 Практическое задание
- •8 Мультипликация с чередованием видеостраниц
- •9 Практическое задание
- •1 Цель работы
- •2 Мультипликация чередованием набора образов
- •3 Практическое задание
- •4 Работа с набором взаимодействующих образов
- •3 Практическое задание
- •Часть 1
7 Практическое задание
7.1 Модифицировать алгоритм "Снег"
7.1.1 Смоделировать снег с ветром переменного направления.
7.1.2 Смоделировать образование "снежных хлопьев" при
достижении движущимися пикселями нижней части экрана.
7.1.3 Смоделировать град, соскальзывающий на наклонных преградах.
7.2 Модифицировать алгоритм "Взрыв"
7.2.1 Смоделировать взрыв объекта со снижением скорости
осколков в процессе их разлета.
7.2.2 Смоделировать ракету, взрывающуюся при столкновении
с препятствием.
7.2.3 Смоделировать две бомбы: осколки от взрыва первой
подрывают вторую.
7.2.4 Смоделировать разлет осколков с учетом действия
сопротивления воздуха и силы тяжести.
7.2.5 Смоделировать фейерверк (или салют) с ограничением "времени жизни" светящихся осколков.
Лабораторная работа № 2
Синтез сложных динамических образов
1 Цель работы
Практическое освоение приемов синтеза динамических графических образов моделированием характеристик физических процессов.
2 Динамические эффекты с корректировками по условиям
Простая установка набора ограничительных условий на выполнение тех или иных элементов моделируемых физических процессов обычно является лишь базовым элементом при отображении этих процессов. Более сложной (но и более актуальной) задачей является программирование самих характеристик процесса. Рассмотрим простейшие случаи такого моделирования.
{--------------------------------------------------------------------------------------
"Волны" -
динамический процесс с корректировками по граничным условиям
----------------------------------------------------------------------------------------}
for i:=1 to N do begin
X[i]:=random(Gx); { начальные координаты объектов }
Y[i]:=random(40);
P[i]:=random(7)+9; { и их цвет }
vX[i]:=-2+random(5);
vY[i]:=P[i]-6 end; { вертикальная скорость зависит от цвета }
REPEAT
for i:=1 to N do begin
{ при достижении границы меняем направление составляющей вектора скорости }
if (X[i]+vX[i]<0) or (X[i]+vX[i]>Gx) then vX[i]:=-vX[i];
if (Y[i]+vY[i]<0) or (Y[i]+vY[i]>Gy) then vY[i]:=-vY[i];
PutPixel(X[i],Y[i], 0 ); { стирание старого изображения }
inc(X[i],vX[i]);
inc(Y[i],vY[i]); { смена координат }
PutPixel(X[i],Y[i],P[i]) end { вывод нового изображения }
until KeyPressed; ReadKey; ClearDevice;
3 Практическое задание по модификации алгоритма "Волны"
3.1 Создать два перекрещивающихся набора волн
по горизонтали и вертикали.
3.2 Организовать поочередную остановку волн на краях экрана
в зависимости от их цвета.
3.3 Организовать исчезновение элементов волн при совпадении их координат.
4 Динамические эффекты с анализом состояния процесса
{--------------------------------------------------------------------------------------
"Рой" -динамический процесс с постоянной корректировкой по условию.
---------------------------------------------------------------------------------------}
for i:=1 to N do begin
X[i]:=random(Gx); { начальные координаты объектов }
Y[i]:=random(Gy) end;
xc:=1; yc:=Gy div 2; { координаты центра роя }
vxc:=3; { и его скорость}
REPEAT
{ Рой меняет направление движения при достижении края экрана }
if( xc>Gx)or( xc<0) then vxc:=-vxc;
inc(xc,vxc); { смещение центра роя }
for i:=1 to N do begin
dx:=-25+random(51); { генерируем случайное изменение }
dy:=-25+random(51); { координат объектов }
PutPixel(X[i],Y[i], 0); { и стираем их старые положения }
{ Если смещение элемента роя в случайно сгенерированном направлении возможно, то оно корректируется по направлению к центру роя }
if (X[i]+dx> 0 ) and( X[i]+dx< Gx) then begin
if (X[i]+dx< xc) then inc(dx,5)
else dec(dx,5); inc(X[i],dx) end;
if( Y[i]+dy> 0 ) and( Y[i]+dy< Gy) then begin
if( Y[i]+dy< yc) then inc(dy,5)
else dec(dy,5); inc(Y[i],dy) end;
PutPixel(X[i],Y[i], 14) { новое положение объекта }
end
until KeyPressed end.
5 Практическое задание по модификации алгоритма "Рой"
5.1 Смоделировать разноцветный рой с разными скоростями
объектов в зависимости от из цвета.
5.2 Смоделировать два роя разного цвета, центры которых
перемещаются с разными скоростями.
5.3 Смоделировать рой с изменяющимися размерами
и активностью в процессе его существования.
5.4 Смоделировать движение кометы.