| | |||||||
| Register | Search | Today's Posts | Mark Forums Read |
| Forum Physik Forum Physik. |
| | LinkBack | Thread Tools | Display Modes |
|
#11
| |||
| |||
| Moin, Jan Bruns hat geschrieben: Ich sehe jetzt nicht, wieso das Lot auf eine Fläche im Heightmap nicht eine andere Fläche nochmals schneiden sollte. Z.B. H[i,j] = {1 km für (i+j) % 2 == 0 {0 km rest Sicht für meinen Geschmack ganz schön ungemütlich aus. Oder willst du, daß eine Senkrechte zum gesamten Hightmaß die Fläche mehrfach schnieden kann, Hinterschneidungen also möglich sind? Kuglen, ganz viele Kugeln hinschütten. Cu Rollo |
|
#12
| |||
| |||
| "Roland Damm": Genau. Wie meinst Du das? Gruss Jan Bruns |
|
#13
| |||
| |||
| Jan Bruns <[Only registered users see links. ]> wrote: Der Fachausdruck dafuer ist "height map" --- der Spezialfall von "bump maps" fuer waagerechte Grundflaeche. Das Problem, und auch die Loesung, haben mit Physik auch eher wenig zu tun. Das ist primaer Mathematik oder Computergraphik. Wie jede andere nicht-explizite Flaeche im Raum, kann man auch aufgewuehltes Wasser allgemein besser als parametrische Flaeche darstellen, also als Abbildung zweier *beliebiger* Parameter (u,v) auf die drei Koordinaten (x,y,z), statt direkt von (x,y) auf z. Wenn man damit allerdings Volumeneffekte (wie Schwerkraft oder Schwerewellen) modellieren will, artet das in ernsthafte Rechenarbeit aus. Frueher oder spaeter braucht man, wenn das ernsthaft betreiben will, ein volumetrisches Modell, also ein 3D-Gitter, in dem fuer jeden kleinen Wuerfel im Raum gespeichert, ob es da nass oder trocken ist, und wie stark es dort in welche Richtung stroemt. -- Hans-Bernhard Broeker ([Only registered users see links. ]-aachen.de) Even if all the snow were burnt, ashes would remain. |
|
#14
| |||
| |||
| Hans-Bernhard Broeker <[Only registered users see links. ]-aachen.de> writes: Sind bump maps nicht etwas total anderes? IIRC wird da die Fläche eben gelassen und nur dir Richtung der Normalen verfälscht (sodass sie nicht mehr senkrecht zur Fläche steht). Da allerlei Reflexionen und Beleuchtungsdichten von der Normalenrichtung abhängen, bekommt man damit halbwegs realistische 3d-Imitationen, obwohl man komplett in 2d rechnet. Mit Wasserwellen mag das gehen, solange die Winkel klein sind und die Wassertiefe groß gegen die Wellenhöhe. Ralf -- GS d->? s:++>+++ a+ C++++ UL+++ UH++ P++ L++ E+++ W- N++ o-- K- w--- !O M- V- PS+>++ PE Y+>++ PGP+ !t !5 !X !R !tv b+++ DI+++ D? G+ e++++ h+ r? y? |
|
#15
| |||
| |||
| "Hans-Bernhard Broeker": In diesem Kontex6 ist es keine Bumpmap, da es um einen physikalischen "Ereignishorizont" ging. Wenn man so ein Ding dann in der Computergrafik verwendet, dann kann man es in der Tat auch Bumpmap, oder hier noch passender: Displacement-map nennen. Es wird schon seine Gründe gehabt haben, daß ich das Problem hier eingeschleppt habe. Klingt ein weig so, als wolltest Du herausfinden, inwiwieweit diese modernen Grafikprozessoren für wissenschaftliche Berechnungen eingesetzt werden können. So unglaublich enorm sind die Zugewinne im Vergleich zu CPU-basierter Berechnung oftmals nicht. Ausserdem kann die Technik für sehr viele Berechnungen gar nicht bzw. nicht sinnvoll eingesetzt werden. Wenn es Dir also nicht direkt um Darstellung geht, würde ich empfehlen, abzuwaren, bis der IT-Fritze deines Vertrauens versucht, Dir den Kram aufzuschwätzen. Klar. Trotzdem. Also mein Ansatz sieht nun erstmal wie folgt aus. Vielleicht kann das irgendjemand mit mehr Mathe/Physikkentnnissen mal Korrekturlesen. Ich habe mich nun dazu durchgerungen, ein zweidimensionales Vektorfeld zu verwenden, wobei eine Feldeigenschaft dreidimensionale Raumkoordinaten beschreibt. Vereinfacht gesagt habe ich damit ein Oberflächennetz, womit ich die Oberfläche des Wassers beschreiben kann. Dabei muss eine beliebige kontinuierliche Kurve auf dem Feld auch in dem mit der Feldeigenschaft beschriebenen Raum eine kontinuierliche Kurve abbilden. Der Einfacheit halber assoziere ich eine Koordinate z (der Feldeigenschaft) mit der Wasserhöhe, und setze fest, daß bei komplett ruhiger Wasseroberfläche z für das gesamte Feld geich sein soll, während die beiden anderen Koordiaten der Feldeigenschaft (bei stillem Wasser) gleich ihren Feldkoordinaten sein sollen. Nun gilt es, Verformungsregeln der Wasseroberfläche zu finden. Wasser ist (zumindest in dem hier relevanten Rahmen) nicht komprimierbar, und die Wassermenge bleibt konstant, sofern nicht etwas aus dem Feld entnommen oder hinzugefügt wird: int(int(feld[x,y].z*dif(feld[x,y].x)*dif(feld[x,y].y),x=ax..bx),y=ay..by) = const * (bx-ax) * (by-ay) Aus meinen Naturbeobachtungen weiß ich, daß die Verformung von Wasseroberflächen kein rein oberflächlicher Effekt sein kann, also eine Wellenausbreitung nicht derart geschieht, daß die Oberfläche vom Wellenberg zum Tal läuft, sondern vieleher die Wellenberge selbst sich bewegen, und ihre waagerecht weitgehend ruhende Oberfläche entsprechend verformen. Jedenfalls ist die waagerechte Oberflächenbewegung weitaus geringer, als die vertikale. Andererseits lässt sich eine Welle nahezu vollständig "abschirmen", wenn an der Oberfläche ein Hindernis wenigstens eine Wellenhöhe in das Wasser ragt (getestet mit Brettchen im Waschbecken). Demzufolge muss also ein Volumenstrom tangential zur Oberfläche für die Wellenausbreitung verantwortlich sein. Um diesen Strom zu beschreiben, füge ich der Feldeigenschaft zwei weitere Koordinaten fx und fy bei, die tangentialen Strom entlang der beiden Feldachsen bescheiben. Um den oben genannten Wassererhaltungssatz nicht zu verletzen, muss nun wohl, wenn der Strom tatsächlich Wasser von einem Punkt des Feldes zu einem anderen bewirken soll, auf beiden Seiten der gleiche Wassermengenbetrag hinzu- bzw. hinfortgenommen werden. Nach diesem Wassererhaltunssatz (den ich hoffentlich korrekt formuliert habe), lautet der Term für die Wassermenge bei einem Punkt Menge(x,y) = feld[x,y].z*dif(feld[x,y].x)*dif(feld[x,y].y) Wird nun Wasser hinzugefügt, dann ist Neumenge(x,y) = Altmenge(x,y) + Zufluss Neumenge(x,y) = feld_[x,y].z*dif(feld_[x,y].x)*dif(feld_[x,y].y) + Zufluss feld_[x,y].z*dif(feld_[x,y].x)*dif(feld_[x,y].y) = feld[x,y].z*dif(feld[x,y].x)*dif(feld[x,y].y) + Zufluss Zufluss = feld[x,y].fx + feld[x,y].fy Zwecks Energieerhaltung kann der Tangentialstrom durch Höhenunterschiede fortwährend beschleunigt werden, afxh = k * dif(feld[x,y].z,x) afyh = k * dif(feld[x,y].z,y) wenn man den Strom als Flussgeschwindigkeit auf einem fixen Querschschnitt interpretiert. Zusammen mit einer Reibungskonstante zwecks Energieverlust: feld_[x,y].fx = reibfrei * (feld[x,y].fx + afxh) feld_[x,y].fy = reibfrei * (feld[x,y].fy + afyh) Nun hat die Verformungsgleichung noch einige Freiheiten. Vielleicht macht es Sinn, eine Reibung des Tangentialstroms an der Oberfläche zu Vermuten. Z.B. so ähnlich wie: feld_[x,y].x = feld[x,y].x + reib * feld[x,y].fx feld_[x,y].y = feld[x,y].y + reib * feld[x,y].fy Ohne das jetzt rechenrisch überprüft zu haben, vermute ich, daß damit bereits eine eindeutige Verformungsgleichung gegeben ist. Weiter nehme ich an, daß diese Ausführungen noch zu buggy sind, um ernsthaft die Oberflächenspannung mit reinzubasteln (was wohl am besten energetisch beim Stromterm ginge). Gruss Jan Bruns |
|
#16
| |||
| |||
| "Jan Bruns": Also hier ist schonmal wenigstens ein Vorzeichenfehler drin, wenn ich das richtig sehe. Die Idee war eigentlich, daß nach unten ausgerichtete Oberflächenteile der eigentlichen Flächenausrichtung entgegengerichtet sind. Der Fehler tritt auf, wenn die Oberflächenausrichtung auf beiden Achsen entgegenlaufend ist. A=dif(feld[x,y].x,x) B=dif(feld[x,y].y,y) flaechenfaktor = abs(A*B)*min(sign(A),sign(B)) Gesamtwassermenge = int(int(feld[x,y].z*flaechenfaktor, x=ax..bx),y=ay..by) Gruss Jan Bruns |
|
#17
| |||
| |||
| Jan Bruns <[Only registered users see links. ]> wrote: _Ich_ will gar nichts herausfinden. Ich versuchte nur, die urspruengliche Frage zu beantworten: wie kann man eine Flaeche im Raum mathematisch so modellieren, dass sie nicht explizit sein muss, also an jeder stelle (x,y) nur eine Hoehe z=f(x,y) hat? Und genau das leistet die parametrische Flaeche. Also genau das, was ich vorgeschlagen hatte: eine parametrische Flaeche, diskretisiert in ein zweidimensionales Gitter. "Oberflaeche" kann gar nicht von irgendwo nach irgendwo anders "laufen". Sie verformt sich, weil sich das *Volumen* verformt, also durch Stroemungen des Wassers innerhalb der Oberflaeche. Nicht allein. Es fehlt die Erklaerung, was diesen Volumenstrom (die "Auslenkung") dazu verleitet, nicht nur hin- sondern anschliessend auch wieder zurueckzufliessen (die Rueckstellkraft). Den liefert bei Wasserwellen ein variables Gemisch aus Schwerkraft, Wind, Bodeneffekten des Gesaessers, und Oberflaechenspannung. Mit einer Oberflaechenmodellierung allein kann ein solches Mikromodell von Wasserwellen nicht wirklich funktionieren, denn wie du selbst schon ganz richtig festgestellt hast, ist das primaer ein Volumeneffekt. Und um den zu beschreiben, muss auch die Datenstruktur dreidimensional Volumen haben. Es ist sicherlich falsch, anzunehmen, dass die lokale Stroemungsgeschwindigkeit fuer alle z, bei gegebenem Ort (x,y), gleich sei. -- Hans-Bernhard Broeker ([Only registered users see links. ]-aachen.de) Even if all the snow were burnt, ashes would remain. |
|
#18
| |||
| |||
| "Hans-Bernhard Broeker": Entschuldige. Dann habe ich anscheinend deine Ausfuehrungen ziemlich sinnreduziert aufgenommen. Gemeint war, daß das Wasser sich nicht so verhält, als wäre es in einer momentanen Form schmelzend eingeforen. Hätte ja sein können, dass das Wasser ansich eigentlich ein starrer Koeper ist, an dem sich lediglich eine Oberflächenschicht frei bewegen kann. Ja. So kann man z.B. auch unter Wasser die Oberfläche von Wasser "aufwuehlen", was allerdings oft vergleichsweise anstrengend ist. Wie in dem Modell meine Annahme zur Tiefenverteilung der strömungsgeschwindigkeit aussieht, weiss ich noch gar nicht so genau, und vermute, daß ich diese nich eindeutig festgelegt habe. In dem Modell bleibt bisher statisch betrachtet der tangentiale Strom bei einem Punkt von einer Richtungsänderung unabhängig. Der Strom wird durch die vertikale Steigung Beschleunigt. Mit dem verwendeten Term muss dann wohl die tiefenabhängige (Tiefe meint hier entlang der Flächennormalen) Geschwindigkeit v(q) dem energietischen Zusammenhang m*int(v(q)^2,q=q_min..q_max)/(q_max-q_min) = fx^2+fy^2 genügen, was in der Tat z.B. mit einer Tiefenunabhängigen Strömungsgeschwindigkeit v(q) = sqrt(fx^2+fy^2) möglich wäre. Sicherlich lassen sich auch realiätsnähere Annahem finden, die diese Bedingung ebenfalls erfüllen. Auf die Form der Oberfläche hat das allerdings keinen Einfluss. Möglicherweise macht es Sinn, dem Modell einige weitere fx/fy-Paare mit verschiedenen Trägheitskonstanten k zu verwenden. Sehr kleine k dürften allerdings wegen des oben beschriebenen Fehlers (statisch betrachtet gleichbleibender Strom, trotz Richtungsänderung) wenig Sinn machen. Da in grösserer Tiefe der Strom anscheinend weitestgehend unabhängig von Kräuselungen auf der Oberfläche ist, wäre es dementsprechend sicherlich sinniger, solche Berechnungen auf die Feldkoordinaten (also ein Quadrat- oder Kubikraster), anstatt auf die Oberfläche zu beziehen. Ein solcher Systemwechsel scheint mir allerdings auf Grafikprozessoren momentan extrem "teuer" zu sein. Gruss Jan Bruns |
|
#19
| |||
| |||
| Moin, wenn auch etwas spät,... Jan Bruns hat geschrieben: Kugeln lassen sich von bestimmten Programmen sehr schnell darstellen. Die Oberflächennormale ist einfach bestimmbar für jeden Pixel und die dazugehörigen Pixel bilden einen Kreis. Raytracing kann jedenfalls Kugeln sehr gut handlen. Also die Oberfläche durch Kugeln annähren. CU Rollo |
| Tags |
| simulation , unruhige , wasseroberfläche |
| Thread Tools | |
| Display Modes | |
|
|
| | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Simulation des Aufstiegs eines Stratosphärenballons und eines Fallschirmsprungs aus 30km bzw. 40km Höhe | Jens Remus | Forum Physik | 33 | 12-03-2007 08:42 AM |
| Simulation Evolutionsgeschwindigkeit | Roland Damm | Forum Biologie | 4 | 07-27-2006 09:46 PM |
| CADSM: 3D CAD with Motion Simulation | A-S Koh | Physics Forum | 0 | 09-27-2004 03:33 PM |
| New software for simulation of 3D life forms available | Maciej Komosinski | Forum Biologia | 0 | 06-25-2004 12:39 PM |
| New software for simulation of 3D life forms available | Maciej Komosinski | Forum Biologie | 0 | 06-25-2004 12:39 PM |