Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Моделирование снегопада


Автор: INFELIGO 12.6.2006, 00:50
Помогите смоделировать снегопад в Delphi!...а то я не получатеся у меня алгоритм придумать и реализовать его в Delphi....нужно чтоб образовывалиьс сугробы и дул перменный ветер... 

Автор: Sunvas 12.6.2006, 00:58
А ты с ипользованием чего хочешь писать - DirectX, OpenGL? 

Автор: INFELIGO 12.6.2006, 01:07
Sunvas, ну на канвасе просто....а то для меня это сложновато пока .........мне алгоритм важен 

Автор: Sunvas 12.6.2006, 01:09
На канве, да чтоб 
Цитата(INFELIGO @  12.6.2006,  00:50 Найти цитируемый пост)
образовывалиьс сугробы и дул перменный ветер

думаю это невозможно.

Добавлено @ 01:12 
Вот у меня завалялся примерчик на javascript. Мож чем поможет. 

Автор: Cheburek 12.6.2006, 01:14
Sunvas, Я видел подобную программу, алгоритм правда не помню, на канвасе было все сделано: просто белые кружочки падал на черном фоне, правда мерцало все, как обычно мерцает на канвасе, но я думаю, человеку важен алгоритм, а не качество графики... 


Цитата

Вот у меня завалялся примерчик на javascript. Мож чем поможет. 

они там по синусойдам падают с разными амплитудами и скоростями - интересный вариант
 

Автор: Yanis 12.6.2006, 08:18
Если здесь никто не ответит, то думаю вопросу самое место здесь
http://forum.vingrad.ru/index.php?showforum=129
mr.DUDA в поиске алгоритма точно не откажет. 

Автор: Mechanic 12.6.2006, 12:08
Есть у ня симпотный снежок на ASM'e, он многослойный, разной яркости и скорости слои. Выглядит более-менее натурально. Только ветра там нет, и сугробов. Но это не сильно сложно будет прикрутить при желании. Бросать? 

Автор: INFELIGO 12.6.2006, 13:55
Mechanic, давай.. 

Автор: Mechanic 12.6.2006, 14:26
Вот. Нашел. Не уверен, что сразу заработает, ведь это выдранный кусок проекта.
Там в основной форме была I1: TImage, на которой всё и происходило. 

Автор: INFELIGO 13.6.2006, 21:39
Mechanic, не заработала пока( 

Автор: INFELIGO 1.7.2006, 17:47
Вот мой сенгопад..с переменным ветром...

Код



IF test THEN begin
for j:=1 to k do begin

vx[j]:=vx[j]-veter;
vy[j]:=vy[j]+{0.3*M[j]}(g*dt*dt)/2;
X[j]:=X[j]+vx[j]*dt;
Y[j]:=Y[j]+vy[j]*dt;
end;
for j:=1 to k do begin

Form1.Image1.Canvas.Pen.Color:=D[j];
Form1.Image1.Canvas.Brush.Color:=D[j];
Form1.Image1.Canvas.Ellipse(round(X[j]-M[j]/2),round(Y[j]-M[j]/2),round(X[j]+M[j]/2),round(Y[j]+M[j]/2));
end;
test:= false ;
exit;
end;

IF not(test) THEN  begin
for j:=1 to k do begin
Form1.Image1.Canvas.Pen.Color:=clWhite;
Form1.Image1.Canvas.Brush.Color:=clWhite;
Form1.Image1.Canvas.Ellipse(round(X[j]-M[j]/2),round(Y[j]-M[j]/2),round(X[j]+M[j]/2),round(Y[j]+M[j]/2));

end;
for j:=1 to k do
IF (X[j]>=400) or (X[j]<0) or (Y[j]>=225) then
begin
M[j]:=2+(7-2)*random;
X[j]:=random(400);
Y[j]:=0;
vx[j]:=0; vy[j]:=random(10);
end ;

end;

test:=True;




 

Автор: Elfin 13.7.2006, 18:54
Столкнулся недавно с подоной проблемой, и написал решение. Здесь есть и ветер и сугроб и возможность изменять силу ветраб скорость падения снега и направление ветра. Ув. тов. программисты, прозьба заценить. 

Автор: Alexeis 13.7.2006, 23:31
А почему сугробы получаются зелеными? 

Автор: Elfin 13.7.2006, 23:53
Потому что снег я тоже зеленый сделалsmile я думаю изменить "rgb(...,...,..)" в коде на clwhite не сложно будет 

Автор: Alexeis 14.7.2006, 09:10
Elfin - то что снег переливается - это очень красиво, но на земле он лежит и не движентся, поэтому нужно сменить оттенок на светло-светло серый, так чтоб каждая снежинка имела свой оттенок и можно попробовать сделать размытие для точек сугроба 

Автор: Elfin 16.7.2006, 01:30
Дело в том что снег у меня зеленый потому что под Image1 изначально у меня Картинка с летним пейзажом, а у Image1 св-во Transparent = true поэтому прикольно получается когда на фоне картинки с ярко зелеными деревьями идет зелено-желтый снег.
Цитата

но на земле он лежит и не движентся

А зачем ему там двигаться??smile
Каждая снежинка итак имеет свой оттенок просто трудно заметить, надо в коде с переменными поиграться чтобы разность оттенков была заметна.
Цитата

можно попробовать сделать размытие для точек сугроба

А вот этого я не умею и не знаю, поможешь - буду радsmile 

Автор: Alexeis 16.7.2006, 13:35
Цитата(Elfin @  16.7.2006,  01:30 Найти цитируемый пост)
А зачем ему там двигаться??
 не я имел в виду, что когда снежинка движется, то она преломляет свет и может козаться и красной и зеленой и любого друго цвета - так как сделано у вас. Я не художник, но как мне кажется сугробы уже не могут быть разноцветными, по крайней мере оттенок  должен изменится. По поводу размытия, так это очень легко найти. Размытие по гаусу имеется как в DRKB, так и по форуму.

Добавлено @ 13:37 
http://forum.vingrad.ru/index.php?showtopic=89164&hl=%D0%93%D0%B0%D1%83%D1%81 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)