Для этого будем предварительно проверять цвет пикселя в той точке, в которую собираемся переместить снежинку, т.е. в точке с новыми координатами (x1,y1).
Если впереди препятствие определенного цвета (поверхность земли, а затем и упавший снег), то снежинка останавливается. При этом она меняет свой цвет, что позволяет летящим снежинкам прилипать к уже упавшим, образуя, таким образом, сугроб (снежный покров):
if canvas.pixels[x1,y1]<>claqua then
begin
canvas.Pixels[x1,y1]:=clred;
canvas.Pixels[x[k],y[k]]:=clbtnface;
x[k]:=x1;y[k]:=y1;
end
else
begin
canvas.pixels[x[k],y[k]]:=claqua;
x[k]:=random(500)+20;
y[k]:=50;
end;
Проект 12. Дымоход.
Нарисовать две наклонные линии стенок трубы (наклонные для скорости засорения трубы). Запустить снизу частички сажи и ждать когда засорится труба.
Проект 13. Электролиз.
Нарисовать в центре формы шар (катод).
Запустить с четырех сторонионы (частички) и ждать когда они налипнут на шар.
Для того, чтобы частички летели с разных сторон необходимо задать четыре пары массивов координат:
x[k], y[k] координаты k– ой точки, летящей слева.
x1[k], y1[k] координаты k– ой точки, летящей сверху.
x2[k], y2[k] координаты k– ой точки, летящей справа.
x3[k], y3[k] координаты k– ой точки, летящей снизу.
Проект 14. Берег.
Программа моделирует морские волны, которые размывают берег, изменяя рельеф береговой линии, в зависимости от твердости породы.
Работу над проектом разобьем на три этапа:
I. Нарисуем волны (в виде пикселей синего цвета) и поверхность земли (в виде зеленого прямоугольника с желтыми участками более легкой породы).
II. Заставим волны двигаться (докатываться до береговой линии).
III. Заставим волны размывать берег, уничтожая (унося в море) по одному пикселю береговой породы.
В итоге мы можем получить картинки следующего вида:
И через некоторое время: