Czesc!
Mam taki klopot:
Od kilku dni probuje zrobic program ktory moglby przdstawiac fale na wodzie, oczywiscie to wszystko oparte o tablice 2-wymiarowe, znalazlem arty na gamedev na ten temat, ale jest taki klopot ze nie bardzo mi dzialaja te algorytmy, tz. wartosc komórek za bardzo się zwieksza lub zmniejsza . I w ogóle jakos mi to badziewnie wychodzi. Wiec jezeli ktos robil takie rzeczy prosilbym z grubsza wytlumaczyc o co chodzi i jak to mozna zrobic.
0
0
Kwestia implementacji ;-P
Zrobiłeś to dobrze? Nie działa - to chyba nie...
0
Tak sie składa że akurat robiłem o tym Prace Przejściową. Jest to zagadnienie dosyć skomplikowane, a mi zajęło 5000 lini kodu. Poczytaj jak najwięcej o równaniu falowym. Najważniejszy fragment mojego programu to:
//Predkosc
for (i = 1; i < mRx; i++)
for (j = 1; j < mRy; j++)
{
V[i, j] += A * (U[i + 1, j] + U[i - 1, j] + U[i, j + 1]
+ U[i, j - 1] - 4 * U[i, j]);
}
//Polozenie
for (i = 1; i < mRx; i++)
for (j = 1; j < mRy; j++)
{
U[i, j] += V[i, j] * dt;
}
gdzie
A = v * v * dt / dx / dx;
v - prędkość rozchodzenia się fali
dt - chwila czasu
dx - stopień dyskretyzacji
To jest tylko jedno z wielu rozwiązań równania falowego. Funkcja U[i,j] to funkcja wychyleń dla każdego wierzchołka siatki, przedstawiającej powierzchnię wody. Aby program działał prawidłowo trzeba też ustalić warunki początkowe i brzegowe. Możesz o nich poczytać na necie.