Description #

L’objectif de ce projet est de mettre en oeuvre un algorithme appelé “damping” et qui permet de modéliser des ondes aquatiques.
Lorsque des pierres tombent dans l’eau, des ondes se propagent depuis le point d’impact et peuvent se rencontrer.
L’algorithme, cité plus bas, nécessite beaucoup de calculs et doit être appliqué à un nombre restreint de “tuiles” qui sont des carrés de pixels.
L’interface finale va présenter une fenêtre dans laquelle on peut faire partir des ondes depuis l’endroit où on clique.
Algorithme #
damping = some non-integer between 0 and 1
begin loop
for every non-edge element:
loop
Buffer2(x, y) = (Buffer1(x-1,y)
Buffer1(x+1,y)
Buffer1(x,y+1)
Buffer1(x,y-1)) / 2 - Buffer2(x,y)
Buffer2(x,y) = Buffer2(x,y) * damping
end loop
Display Buffer2
Swap the buffers
end loop
Le principe est simple :
On garde une grille (tableau 2D) avec la couleur des tuiles.
- Lorsqu’on clique quelque part, on change la valeur de la tuile à la valeur maximale.
- D’une frame à l’autre, on copie les pixels, on calcule le nouvel état et il remplace le précédent état.
Objectif #
- Implémenter convenablement cet algorithme. Son code doit être clair et bien découpé
- Implémenter une interface avec pgzero (pas pygame seul) où l’on peut cliquer pour créer des vagues.
Dans le resultat, les vagues rebondissent sur les bords.