Wellenberechnung in 2D
Übersicht

![]() |
NoobodyBetreff: Wellenberechnung in 2D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Passend zu der Wellensimulation in 3D (*klick*) kommt jetzt die 2D - Variante, allerdings auf einem anderen Prinzip basierend. Spiele wie World of Goo und Gunsheep machen es vor, weswegen es mich gereizt hat, etwas ähnliches nachzuprogrammieren.
Es funktioniert so, dass man sich das Wasser als einen Faden vorstellt, der aus untereinander mit Gummibändern verbundenen Punkten besteht. Wird ein Punkt nach unten gezogen, zieht er seine Nachbarn ebenfalls mit, was eine Welle entstehen lässt. Gleichzeitig wird der Punkt aber von seiner Ruhelage angezogen, so dass er irgendwann wieder zur Ruhe kommt. Die Berechnungen dazu sind relativ simpel, wodurch das Wasser auch bei grossen Flächen nicht allzuviel Rechenzeit verschlingen sollte. Lediglich die Zeichenfunktion könnte kritisch werden, ich empfehle daher bei grösseren Wasserflächen, das Wasser durch ein Mesh darstellen zu lassen (da könnte man auch noch eine Textur draufbringen, wenn man es grafisch ansprechend will). BlitzBasic: [AUSKLAPPEN] Const GWIDTH = 800 Mit linker Maustaste kann man neue Wellen setzen. |
||
- Zuletzt bearbeitet von Noobody am So, Apr 19, 2009 19:18, insgesamt 2-mal bearbeitet
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei mir kommt es da zu einem "Array Index out of Bounds"-Error, ich habe das Problem aber gelöst indem ich das -1 bei folgenden Zeilen entfernt habe:
Code: [AUSKLAPPEN] Dim Wave#( GWIDTH/STEPSIZE - 1 )
Dim Speed#( GWIDTH/STEPSIZE - 1 ) ansonsten finde ich es relativ schnell und auch realistisch genug. ![]() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir kommt kein Fehler, ist aber auf jeden Fall ein schöner Effekt. | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Thunder hat Folgendes geschrieben: Also bei mir kommt es da zu einem "Array Index out of Bounds"-Error
Seltsam, bei mir läuft es fehlerlos. Ich habe trotzdem mal sicherheitshalber die -1 entfernt. Danke fürs Feedback! |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Fehlermeldung kommt nur wenn der Debugger an ist.
Ich hab einfach mal was damit gemacht: Ich hatte es auch mit Draw3D probiert (für Transparenz), aber es waren zu viele Linien. |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nicdel hat Folgendes geschrieben: Ich hatte es auch mit Draw3D probiert (für Transparenz), aber es waren zu viele Linien. Wäre es nicht klüger, wenn man das mit Quad3D macht, anstatt mit Linien? |
||
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Finde deine Codes (auch die andere Wellensimulation) echt toll. ![]() Nette spielerei. ![]() Eine kleine Anmerkung noch: Das Wasser ist jeweils an dem linken und rechten Rand fest. Hast du vermutlich gemacht, damit die Wellen am Rand reflektieren (nennt man das da so?). Normal sollte das ja aber anders sein. ![]() ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab das Ganze mal umgeschrieben, so dass es ein Mesh zum Rendern benutzt. Damit besteht auch die Möglichkeit, das Wasser noch mit einer Textur zu versehen.
BlitzBasic: [AUSKLAPPEN] Const GWIDTH = 800 Der Code braucht noch eine Textur - man kann natürlich irgendeine nehmen, ich habe diese hier verwendet: ![]() Das ganze gibt es auch als Archiv mit dem Code, der Textur und einer Exe, hier zu finden. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group