Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Turbo Pascal / Методические указание / Синтез графических образов простыми средствами.DOC
Скачиваний:
17
Добавлен:
15.06.2014
Размер:
205.82 Кб
Скачать

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 Смоделировать движение кометы.