Wasser programmieren
lima-city → Forum → Programmiersprachen → Basic
amplitude
anziehung
anziehungskraft
aufprall
bestimmtes gewicht
initiator
langsamer laufen
maximale dehnung
maximum
objekt
paar
punkt
realistisches wasser
relative amplitude
summe
teilchen
umliegenden teilchen
wasser
welle
zeitdifferenz
-
Ich bräuchte einmal ein paar Denkanstöße, wie ich realistisches Wasser programmieren kann. Ich habe schon viel gesucht und selbst entworfen, aber das entsprach alles nicht meinen Prämissen:
1. Das Meer besteht aus einer Reihe von Punkten, die von oben gesehen fest sind
2. Die Amplitude geht von 0 bis 1
3. Ich muss die Zeit langsamer laufen lassen können, ohne dass die Wellen springen oder sich anders verhalten
4. Möglichst schnell und speicherfreundlich sollte es auch noch sein
Ich freue mich über Denkanstöße. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Lege Wellen aus animierten Gif's über ein Wasser Wallpaper.
-
Sowas habe ich selbst zwar noch nicht gemacht, aber ich würde folgendermaßen vorgehen:
1. Für die Wellen brauchst du erstmal einen Initiator, also ein Objekt, das ein bestimmtes Gewicht hat
2. Die Teilchen müssen gegeneinander eine Anziehungskraft besitzen, dessen genauen Wert ich mal deinem Feintuning überlasse.
Los Gehts:
3. Das Objekt fällt auf die Wasseroberfläche, beim Aufprall wird es abgebremst, entsprechend der Summe aller Anziehungskräfte, der gedehnten Teilchen (kommt in 4.), wobei näherungsweise die Anziehung zwischen Objekt und Wasserteilchen vernachlässigt wird (wird sonst unnötig kompliziert).
4. Wie in 3. erwähnt, werden die Teilchen nun gedehnt, wobei äußere Teilchen nachrücken, bis alle Teilchen auf ihr Maximum gespannt sind (zu diesem Zeitpunkt gilt: Gewichtskraft des Objekts = Summe aller beteiligten Anziehungskräfte)
5. Jetzt bricht die Wasserfront, die Punkte beginnen sich oberhalb des Objekts zu treffen und das Objekt selbst sinkt in das Wasser hinein.
6. Jetzt wo das Wasser bricht und die maximale Dehnung erreicht ist, ist damit auch deine relative Amplitude gegeben, die du dann als 1 definieren kannst.
7. Die Anziehungskräfte der umliegenden Teilchen ziehen die heruntergedrückten wieder nach oben, wobei > -100% der Ausgangstiefe (also < 100% Höhe) erreicht werden, wobei der zentrale Punkte quasi wiederrum als Objekt wirkt, welche die umliegenden Teilchen aber diesmal hoch "zieht". Als Berechnungsansatz würde ich hier das Newtonsche Pendel empfehlen.
8. Wenn die Punkte ein Array sind und du die Wirkung jedes Teilchens diskret berechnest, ist deine Aufgabe hier quasi schon getan, da sich auf Grund der Zeitdifferenz automatisch ein Wellenmuster ausbildet.
Wie gesagt, nen Code kann ich dir leider nicht liefern, aber vllt inspiriert es dich wenigstens. ;)
Liebe Grüße
- VampireSilence
Beitrag zuletzt geändert: 23.11.2010 19:32:47 von vampiresilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage