Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Freeware: Gasteilchen 3D [1.6.9] (Facharbeit Informatik) (https://www.delphipraxis.net/86649-freeware-gasteilchen-3d-%5B1-6-9%5D-facharbeit-informatik.html)

mr.winkle 16. Feb 2007 21:34


Freeware: Gasteilchen 3D [1.6.9] (Facharbeit Informatik)
 
Liste der Anhänge anzeigen (Anzahl: 2)
Gasteilchen 3D
Ist meine Facharbeit im Fach Informatik :dancer:
Realisiert mit OpenGl, mit vielen Statistik Funktionen und Einflussmöglichkeiten...
Wenn sich irgendwo der Fehlerteufel eingeschlichen haben sollte, dann sagt mir bitte bescheid ;-)

In der neuen Version 1.6 dazugekommen:
  • Pfeile zeigen die Richtung der Teilchen an
  • Farbe der Teilchen gibt Aufschluss über deren kinetische Energie
  • Bugfixes ohne Ende

Zur Bedienung: (Auszüge aus meiner Facharbeit)

1.1. Die 3D-Ansicht
Im 3D-Ansichtsbereich navigiert der Benutzer ausschliesslich mit der Maus:
Wird die linke Maustaste gedrückt gehalten und die Maus bewegt, so dreht sich die Kamera um den Raum herum und es ist möglich, die Gasteilchen aus jedem Winkel zu beobachten.
Hält man hingegen die rechte Maustaste gedrückt und schiebt die Maus nach oben oder unten, so ändert sich die Brennweite der Kamera. Dieses Zoomen erlaubt es, Teilbereiche des Raumes vergößert zu sehen.
Durch einen Klick auf den Button "Reset" (oben rechts unter Ansicht) - oder auch mit einem Klick mit dem Mausrad auf den 3D-Ansichtsbereich - werden alle Änderungen an der Kamera zurückgesetzt.


Wie ihr an die Statistiken usw kommt, ist selbsterklärend. Das Programm wird ausschliesslich mit der Maus gesteuert und konfiguriert.

fwsp 16. Feb 2007 21:46

Re: Gasteilchen 3D - Informatik Facharbeit
 
sieht richtig hübsch aus. :thumb:
das einzige was ich auf alle fälle noch überarbeiten würde ist die speicherung der presets. xml ist wirklich ganz toll. :wink:

//Edit1
weißt du wo der unterschied zwischen poDesktopCenter und poScreenCenter ist? wahrscheinlich nicht. aber alle die vor mehr als einem monitor sitzen...
stell die position mal auf screencenter, dann wird die form in der mitte des primären monitors angezeigt und nicht wie jetzt zwischen den monitoren.

stahli 16. Feb 2007 21:57

Re: Gasteilchen 3D - Informatik Facharbeit
 
Was will der Mann uns sagen? :zwinker:
Ich versteh es zwar nicht wirklich, aber hübsch sieht´s aus. :thumb:
Für die Außenwirkung schon mal volle Punktzahl!

Stahli

Torpedo 16. Feb 2007 22:16

Re: Gasteilchen 3D - Informatik Facharbeit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ist es normal, dass die Teilchen den Würfel verlassen können? ;) (Screeshot)
Das passiert, wenn ich das Fenster längere Zeit herumschiebe und dann wieder loslasse.

Christian Seehase 16. Feb 2007 23:37

Re: Gasteilchen 3D - Informatik Facharbeit
 
Moin Mr. Winkle,

sieht schick aus :thumb:

Was mir aber aufgefallen ist:
  • Preset: Energieverteilung
    Wenn ich den Ofen heisser mache, wird die Bewegung schneller
    => War zu erwarten
    Wenn ich dann den Ofen kälter mache, oder ganz entferne bleibt die Geschwindigkeit
    => Soll das so sein?
  • Preset: Kompression
    Wenn die Wand aus- und wieder eingeschaltet wird, wird wieder der Ausgangszustand hergestellt.
    => Soll das so sein?
  • Presets Vermischung (beide):
    Zu Beginn, bevor noch die Bewegung aktiviert wird, sind schon ein paar Teile auf der jeweils anderen Seite.
    => Soll das so sein?
  • Simulation - Voreinstellungen:
    Ich fände es praktisch, wenn Du alle im Verzeichnis gefundenen Presets schon gleich als Menüpunkte anzeigen würdest. Jeweils gültig für das zuletzt geöffnete Verzeichnis. Evtl. könntest Du dann eine andere Dateiendung und einen speziellen Eintrag in der Datei als Kennung für eine gültige Presetdatei nehmen.
  • Simulation - Voreinstellungen:
    Wenn ich über "Presets\Voreinstellung" laden den Dateiauswahldialog öffne, und keinen Preset auswähle sondern abbreche erhalte ich die Fehlermeldung "Listenindex überschreitet das Maximum (0)"
  • Simulation - Beenden:
    Das Untermenü mit Ja/Nein ist recht untypisch, und mir verschliesst sich auch der Sinn. Wer den Menüpunkt beenden anwählt wird das wohl auch wollen ;-)
  • Groupbox "Ansicht":
    Der Reset-Button ist ohne Funktion, und dessen Caption ist kleingeschrieben.
    Korrektur: Den Sinn habe ich gerade gefunden. Aber nur durch Zufall ;-)
  • Groupbox "Einflüsse":
    Meiner Meinung nach sollten hier entweder alle Unterpunkte fett, oder alle normal geschrieben werden. Bei "Ansicht\Bewegung" kann ich die Hervorhebung ja noch nachvollziehen, an dieser Stelle nicht.
  • Groupbox "Einflüsse":
    Eine etwas andere Gruppierung, evtl. optisch durch Bevel getrennt, oder die Einflüsse als Überschriften, und die Regler darunter, für die drei Einflüsse wäre nicht schlecht. Bei "Diffusion durch ein Loch" soll man den zweiten Regler benutzen. Du meinst aber den zweiten Regler der Wand. Der ist mir aber nur durch Zufall aufgefallen, als ich mal mit den Einstellungen gespielt habe.
  • Groupbox "Erstellen":
    Die Ausrichtung der Controls könntest Du noch einmal überarbeiten. Der Regler für den Radius und die Checkbox für die Verteilung auf zwei Seiten müssten weiter nach rechts.
  • Groupbox "Erstellen":
    Wenn ich bei aktivierter CheckBox "Gleicher Radius" versuche den Regler zu verschieben, hängt sich das Programm auf.
  • Groupbox "Erstellen":
    Wozu man die Anzahl der Farben einstellen kann, bzw. wann das irgendwelche Auswirkungen hat konnte ich nicht feststellen, sobald ich einen Preset geladen hatte. Hat die Position irgendetwas mit den CheckBoxen darüber zu tun?
  • Allgemein:
    Controls, die gerade keine Funktion haben sollten immer deaktiviert werden (z.B. die Regler bei "Wand", wenn diese CheckBox nicht aktiviert ist). Damit hätte sich dann automatisch wohl auch das Problem mit dem Radius-Regler erledigt.
  • Allgemein:
    Hints zu den Controls wären nicht schlecht, zumal ja nicht alle beschriftet sind.
  • Statistik/Überwachung allgemein:
    Es wäre schön, wenn man diese Fenster an das Hauptfenster andocken könnte.
  • Statistik/Überwachung - Zahlen:
    Wie ist das mit den Kollisionen gemeint? Jeweils innerhalb einer Sekunde?
  • Statistik/Überwachung - Visuell:
    Die CheckBox "Radien beachten" könnte ein wenig weiter nach rechts.
  • Statistik/Überwachung - Visuell:
    Wovon hängt es eigentlich ab, welche Kugel verfolgt wird?
  • Statistik/Überwachung - Visuell:
    Ich habe keine Möglichkeit gefunden, die Spur von "Kugel verfolgen" wieder zu löschen. Sie bleibt auch bestehen, wenn ich eine neue Voreinstellung lade.

Ich hoffe, es ist jetzt nicht so schlimm, dass mir so viel aufgefallen ist ;-) :duck:

TonyR 17. Feb 2007 00:16

Re: Gasteilchen 3D - Informatik Facharbeit
 
Liste der Anhänge anzeigen (Anzahl: 1)
:thumb: Toll!
Und auch wenn das nicht deine Absicht ist, solche Programme verführen mich immer zum "Mit-Parametern-Gespiele"... *g*
=> siehe Screenshot

Edit: Feuerwerk ist eigentlich Quatsch... das war bloß das erste was mir so in den Sinn kam... :oops:
Erinnert eher an Konfetti und ist sozusagen passend zur derzeitigen Feierlaune mancher Leute...

jokerfacehro 17. Feb 2007 20:59

Re: Gasteilchen 3D - Informatik Facharbeit
 
hi, schönes proggi :)

ich habe bei mir auch das problem, dass die bälle den würfel verlassen.
auch ohne mein zu tun, wenn sie zu schnell sind, passiert das relativ oft.

schön wär auch, wenn man den würfel rotiert, dass dann das spektakel weitergeht und nicht anhält ;)

wenn ich mit matritzen durch bin, programmier ich mir meine eigene 3d engine :mrgreen:

denn mach ich auch ma so en proggi ^^

Alexander Roth 18. Feb 2007 08:53

Re: Gasteilchen 3D - Informatik Facharbeit
 
Genial!!! :thumb: :thumb: :thumb:
Absolut spitze.
(Gasteilchen verlassen den Kasten)


Wirst du den Code nach der Abgabe veröffentlichen?

Gruß Alexander

dino 18. Feb 2007 10:11

Re: Gasteilchen 3D - Informatik Facharbeit
 
kann es sein, dass die gasteilchen unabhängg voneinander sind?

TonyR 18. Feb 2007 10:19

Re: Gasteilchen 3D - Informatik Facharbeit
 
NEIN, wenn du genau hinschaust, also
- unterschiedliche Farben an
- viele Teilchen
- Wand eingeschoben
- wenig wärme aber ofen an
...kannst du sehen, dass sie sich gegeneinander abstoßen! Es kommt dir bei anderen Einstellung vielleicht nicht so vor (weil wir uns ja hier im 3D-Bereich befinden) und sie sich selten überhauptmal treffen... aber mit den eben genannten Einstellungen treffen sie sich garantiert :wink: (und stoßen sich natürlich ab)

mr.winkle 28. Feb 2007 17:40

Re: Gasteilchen 3D - Informatik Facharbeit
 
Erstmal danke für die langen Antworten!
Ich habe die Simulation nochmal etwas überarbeitet, das Fensterhandling sollte jetzt um einiges besser sein, da das Statistikfenster sich jetzt standardmäßig an das Hauptfenster andockt.
Kugeln sollten jetzt nicht mehr den Raum verlassen, wenn doch werden sie sofort wieder zurückgesetzt
(Vorher wurde nur die Geschwindigkeit geändert)
Im Statistikenbereich sind außerdem noch einige grafische Spielereien dazugekommen, aber das seht ihr schon selber.

Wenn die Kugeln sich außerhalb des Raums befinden liegt das leider daran, dass die Geschwindigkeiten zu hoch sind und meine Simulation damit noch nicht richtig fertig wird. Ich werde daran aber noch arbeiten.

Zitat:

Preset: Energieverteilung
Wenn ich den Ofen heisser mache, wird die Bewegung schneller
=> War zu erwarten
Wenn ich dann den Ofen kälter mache, oder ganz entferne bleibt die Geschwindigkeit
=> Soll das so sein?
Während der Kollisionen geht in dieser Simulation keine Energie verloren, genauso wenig wie durch Wandstöße, die Geschwindigkeit sollte also gleich bleiben

Zitat:

Preset: Kompression
Wenn die Wand aus- und wieder eingeschaltet wird, wird wieder der Ausgangszustand hergestellt.
=> Soll das so sein?
Die Wand wird abhängig vom Regler bewegt. Stellt man diesen vor dem Anschalten der Wand ganz nach links so erscheint die Wand auch da.

Zitat:

Presets Vermischung (beide):
Zu Beginn, bevor noch die Bewegung aktiviert wird, sind schon ein paar Teile auf der jeweils anderen Seite.
=> Soll das so sein?
Eigentlich nicht, werde ich ändern!

Zitat:

Groupbox "Ansicht":
Der Reset-Button ist ohne Funktion, und dessen Caption ist kleingeschrieben.
Korrektur: Den Sinn habe ich gerade gefunden. Aber nur durch Zufall Wink
Im Post ganz oben habe ich jetzt kurz die Bedienung erklärt ;-)

Den Code werde ich veröffentlichen, sobald ich da mal ein wenig aufgeräumt habe, sonst reißt ihr mich hier auseinander :mrgreen:

pH1L 28. Feb 2007 18:08

Re: Gasteilchen 3D - Informatik Facharbeit
 
Ist nur ein kleiner Fehler, aber reproduzierbar: Programm an und auf "Erstellen klicken", auf "Statistik / Überwachung", den Ofen an und auf heiß stellen, auch den Wärmeregler auf hoch setzen, dann den Regler links oben auf Maximum (den unter den "Start"- und "Stop"-Buttons"), und schließlich ein wenig im Feld mit der Geschwindigkeitsverteilung herumklicken (eher im rechten Bereich) -> Die Zahl im Label rechts von "Teilchen mit der Geschwindigkeit:" flippt aus (ist zB im negativen Bereich), und kurz danach kommt sowas wie das hier:

---------------------------
Gasteilchen 3D
---------------------------
Zugriffsverletzung bei Adresse 0049A467 in Modul 'Gasteilchen 3D.exe'. Lesen von Adresse 0016EF54.
---------------------------
OK
---------------------------

:mrgreen:
sry fürs rumgemeckere, ist ansonsten aber ein schönes Proggie. :zwinker:

//Edit2: 2tes Prob hat sich von selbst gelöst :mrgreen:

mfg pH1L (btw.. kann mein Name noch nachträglich zu "Phil" geändert werden ?)

mr.winkle 28. Feb 2007 19:09

Gasteilchen Simulation in 3D - Informatik Facharbeit
 
Ich habe das Programm jetzt in einigen Aspekten noch einmal überarbeitet:
  • Die Oberfläche sollte nun übersichtlicher sein, zusätzlich wird bei vielen Elementen jetzt ein Hinweis auf deren Funktion angezeigt.
  • Die Kugeln verlassen den Raum nicht mehr (oder nur noch sehr kurz)
  • Ein paar Labels wurden verändert
  • Bei Aktivierung von "2 Farben auf die Seiten verteilt" werden die Kugeln weiter von der MItte weggesetzt, damit sie beim Starten der Vermischungssimulation nicht schon auf der anderen Seite sind
  • Kleinere Bugfixes
:thumb:

Light 28. Feb 2007 20:27

Re: Gasteilchen Simulation in 3D ---> Echt Super!
 
Hallo Mr.Winkle,

hab grade mal dein Programm getestet!

Schon schön!!
Das würde ich sogar gerne mal meinem Ehemaligen Physiklehrer ans Herz legen - wenn es das dann irgendwo offiziell auf ner Homepage oder so gibt! ;-)

Allerdings müsstest du eventuell noch mal an der Wärme rumbasteln -
wenn man nur den Ofen an hat und die Wärme sonst auf 0 stellt sieht man doch sehr stark
(vor allem bei nur so 4 Teilchen)
das es nur verschiedene Geschwindigkeitsstufen gibt -
zumindest verändern sich die Geschwindigkeiten sehr ruckartig was irgendwie leicht unreal aussieht...
dann könnte man sogar eine "LavaLampe" imitieren :lol:

mir ist grad noch aufgefallen:
wenn ich Kugel verfolgen anhacke und den Genauigkeits schieberegler auf ganz hoch stelle bewegt sich nichts mehr - obwohl es nur 2 Kugeln sind.

Und gibt es noch eine Möglichkeit die Kugeln noch Plastischer aussehen zu lassen?
Vielleicht irgendwie anders mit Licht arbeiten ?

Und schön wäre auch wenn man noch die Wände des Würfels/Gefäßes Leicht undurchsichtig machen könnte um besser sehen zu können wann die Kugeln die Wand treffen :duck:


Und bitte noch wie schon von "fwsp" angesprochen die Position auf poScreenCenter setzen weil sonst muss man immer erst das Fenster Verschieben wenn man zwei Monitore hat...

und das mit dem Andocken ist Nervig wenn man Das Programm Maximiert hat und dann die Statistik sowieso auf den 2Screen Zeihen möchte um möglichst viel Fläche für die Animation zu haben (ich hab nur 2 15" TFT's...)

So ich hoffe es sind ein paar Anregungen dabei mit denen du was anfangen kannst....

Leuchtende Grüße

Stefan

xZise 1. Mär 2007 07:09

Re: Gasteilchen Simulation in 3D - Informatik Facharbeit
 
Vielleicht wäre es praktisch, wenn man die Kugel gerade so eingefärbt ist, dass man daran erkennen kann, wie viel Energie diese Kugel enthält. Dunkelblau für kaum/keine Energie und Rot für viel Energie.
Außerdem sollten die Kugeln wieder Energie verlieren ;)

PS: Kann es sein, dass der "Wärme"-Regler und "Ofen"-Regler ein bisschen verrückt spilen ;) Weil wenn du es auf der vorletzt Kältestufe (vor dem Stillstand) hast und den Ofen anstellst (volle pulle), dann ist ist durch den Wärmeregler eine andere temp. (höher) definiert ;)

PS: Wäre nett, wenn du das "Rasterlos" (die Glider) machen würdest ;)

mr.winkle 2. Mär 2007 14:36

Re: Gasteilchen Simulation in 3D - Informatik Facharbeit
 
Zitat:

Zitat von xZise
Vielleicht wäre es praktisch, wenn man die Kugel gerade so eingefärbt ist, dass man daran erkennen kann, wie viel Energie diese Kugel enthält. Dunkelblau für kaum/keine Energie und Rot für viel Energie.

Das ist ne ne gute Idee, wird in der nächsten Version vorhanden sein.

Zitat:

Zitat von xZise
Außerdem sollten die Kugeln wieder Energie verlieren ;)

Aber nur wenn der Ofen aktiviert wurde, oder? sonst wäre das eher umständlich

Zitat:

Zitat von xZise
PS: Kann es sein, dass der "Wärme"-Regler und "Ofen"-Regler ein bisschen verrückt spilen ;) Weil wenn du es auf der vorletzt Kältestufe (vor dem Stillstand) hast und den Ofen anstellst (volle pulle), dann ist ist durch den Wärmeregler eine andere temp. (höher) definiert ;)

Nein, das ist schon richtig so. Bei der Simulation geht bislang beim Ofen oben im Raum keine Energie verloren. Fügst du dazu noch mit dem Wärme Regler weitere Energie zu, müssen die Teilchen ja noch schneller werden

Zitat:

PS: Wäre nett, wenn du das "Rasterlos" (die Glider) machen würdest ;)
In der nächsten Version umgesetzt.

Zitat:

Zitat von Light
Allerdings müsstest du eventuell noch mal an der Wärme rumbasteln -
wenn man nur den Ofen an hat und die Wärme sonst auf 0 stellt sieht man doch sehr stark
(vor allem bei nur so 4 Teilchen)
das es nur verschiedene Geschwindigkeitsstufen gibt -
zumindest verändern sich die Geschwindigkeiten sehr ruckartig was irgendwie leicht unreal aussieht...

Versteh ich irgendwie nicht ganz, oder ich mach was falsch, also bei mir ists gar nicht so ruckartig

Zitat:

mir ist grad noch aufgefallen:
wenn ich Kugel verfolgen anhacke und den Genauigkeits schieberegler auf ganz hoch stelle bewegt sich nichts mehr - obwohl es nur 2 Kugeln sind.
Und schön wäre auch wenn man noch die Wände des Würfels/Gefäßes Leicht undurchsichtig machen könnte um besser sehen zu können wann die Kugeln die Wand treffen :duck:


Und bitte noch wie schon von "fwsp" angesprochen die Position auf poScreenCenter setzen weil sonst muss man immer erst das Fenster Verschieben wenn man zwei Monitore hat...

und das mit dem Andocken ist Nervig wenn man Das Programm Maximiert hat und dann die Statistik sowieso auf den 2Screen Zeihen möchte um möglichst viel Fläche für die Animation zu haben (ich hab nur 2 15" TFT's...)

Die Position sollte in dieser Version schon auf screencenter sein...
Gibt es eigentlich eine Möglichkeit mit einem Bildschirm zu testen wie sich das Programm auf 2 Monitoren verhält?

Die Wände habe ich testhalber schon einmal durchsichtig gemacht, aber das hat mehr irritiert und genervt als genutzt.
Das mit dem genauigkeitsregler werde ich noch verbessern :hello:

mr.winkle 2. Mär 2007 17:58

Re: Gasteilchen Simulation in 3D - Informatik Facharbeit
 
Die neue Version 1.6 steht jetzt im ersten Post zum Download bereit!
Ich wäre sehr dankbar, wenn euer Support so weiterginge! :dp: :hello:

Antigo 2. Mär 2007 18:36

Re: Gasteilchen 3D [Version 1.6!]
 
Hab den Ofen auf halbe Kraft gestellt und zwei Teilchen rumdüsen lassen. Dann hab ich Teilchenanzahl auf 200 (max) gestellt und das Programm ist eingefroren. Wäre gut wenn du sowas irgendwie abfangen könntest ;)

Mein Rechner ist zwar schon was länger nicht mehr der neuste, aber eine Krücke ist er auch noch nicht. (AThlon XP 2100+ 512MB Ram Geforce 4 TI 4200)


Ansonsten ein sehr interessantes und schönes Programm *lob* :)

mr.winkle 2. Mär 2007 18:51

Re: Gasteilchen 3D [Version 1.6!]
 
Zitat:

Zitat von Antigo
Hab den Ofen auf halbe Kraft gestellt und zwei Teilchen rumdüsen lassen. Dann hab ich Teilchenanzahl auf 200 (max) gestellt und das Programm ist eingefroren. Wäre gut wenn du sowas irgendwie abfangen könntest ;)

Mein Rechner ist zwar schon was länger nicht mehr der neuste, aber eine Krücke ist er auch noch nicht. (AThlon XP 2100+ 512MB Ram Geforce 4 TI 4200)


Ansonsten ein sehr interessantes und schönes Programm *lob* :)

Danke ;)

Das liegt daran, dass die Teilchen, nach dem Erstellen darauf geprüft werden inwiefern sie innerhalb anderer Teilchen liegen und dann verschoben werden
Bei 200 Teilchen ist es da nicht leicht freie Plätze zu finden, deswegen kann es schon mal einfrieren. Mir fällt momentan aber keine geeignete abfrage ein, da es ja manchmal auch funktioniert....

Wenn sich nichts mehr bewegt kann man als erstes versuchen die Positionsüberwachung in der Statistik auszustellen, genauso wie die geschwindigkeitsverteilung. Meist geht es dann doch weiter (jedenfalls hats schon öfter geklappt)

xZise 2. Mär 2007 19:19

Re: Gasteilchen Simulation in 3D - Informatik Facharbeit
 
Zitat:

Zitat von mr.winkle
Zitat:

Zitat von Light
Allerdings müsstest du eventuell noch mal an der Wärme rumbasteln -
wenn man nur den Ofen an hat und die Wärme sonst auf 0 stellt sieht man doch sehr stark
(vor allem bei nur so 4 Teilchen)
das es nur verschiedene Geschwindigkeitsstufen gibt -
zumindest verändern sich die Geschwindigkeiten sehr ruckartig was irgendwie leicht unreal aussieht...

Versteh ich irgendwie nicht ganz, oder ich mach was falsch, also bei mir ists gar nicht so ruckartig

Also er/sie meint, dasss die Geschwindigkeit nicht ganz "gesmooth" mehr wird, sondern immer in großen Blöcken...

Cöster 2. Mär 2007 19:24

Re: Gasteilchen 3D [Version 1.6!]
 
Zitat:

Zitat von mr.winkle
Das liegt daran, dass die Teilchen, nach dem Erstellen darauf geprüft werden inwiefern sie innerhalb anderer Teilchen liegen und dann verschoben werden
Bei 200 Teilchen ist es da nicht leicht freie Plätze zu finden, deswegen kann es schon mal einfrieren. Mir fällt momentan aber keine geeignete abfrage ein, da es ja manchmal auch funktioniert....

Ich nehme an, die Ortzuweisung läuft random. Du könntest doch die Anzahl der Versuche, einen Ort zu finden auf z.B. 100 begrenzen. Wenn nach der 100sten Random-Generierung eines Ortes für ein und das selbe Teilchen immer noch kein freier Platz gefunden wurde, bricht die Suche ab und gibst ne Message aus. (Mit den 100 könntest du noch rumexperimentieren).

Oder: Du schreibst nen Algo, der die Teilchen gleichmäßig (also nicht zufällig) in der Box verteilt. Durch den kannst du dann errechnen, ob es überhaupt möglich ist, so viele Teilchen in die Box zu packen.
Wenn nicht --> Message
sonst --> Teilchen in der berechneten Konstellation anordnen
Das könnte aber komplizierter sein als das erste.

Ich hatte nämlich auch nach ner Zeit die Lust verloren, dein Programm auszuprobieren, weil es immer wieder nach ca. ner Minute (als ich ne bestimmte Einstellung ausprobiert hab) eingefroren ist.

mr.winkle 2. Mär 2007 19:40

Re: Gasteilchen 3D [Version 1.6!]
 
mh. Ich versuche jetzt erst einmal die Teilchen geordnet in den Raum zu setzen, bekomme das aber nicht ganz hin:

Versuch:
Delphi-Quellcode:
var x,y,z:single;
    d,f:single;
    i:integer;
begin
  //T ist das Array mit den Teilchen
  f:=power(high(T),1/3);
  //Der Raum ist 70 Einheiten groß
  d:=70 / f;

  y:=0;
  x:=0;
  z:=0;
  for i:=0 to high(T) do begin
 
    T[i].x:=x;
    T[i].y:=y;
    T[i].z:=z;

    x:=x+d;
    if x>f*d then begin
      x:=1;
      y:=y+d;
    end;
    if y>f*d then begin
      y:=1;
      z:=z+d;
    end;

  end;
Warum wird so nicht der komplette Raum ausgefüllt, sondern es bleiben immer Ränder? :gruebel:

Cöster 3. Mär 2007 13:48

Re: Gasteilchen 3D [Version 1.6!]
 
Zitat:

Zitat von mr.winkle
Warum wird so nicht der komplette Raum ausgefüllt, sondern es bleiben immer Ränder? :gruebel:

Was meinst du mit "Rändern"? Wenn die Anzahl der Teilchen keine Kubikzahl (weiß nicht, ob's das Wort gibt, ich meine Zahlen deren dritte Wurzel eine ganze Zahl ist, z.B. 27), wird das so nicht glatt aufgehen. Auch wenn es eine Kubikzahl ist, müsste man den Code noch etwas ändern:

Delphi-Quellcode:
f:=power(high(T),1/3);
Warum nicht Length statt High?

Delphi-Quellcode:
y:=0;
x:=0;
z:=0;
Wenn eine Koordinate 0 ist, liegt das Teilchen ja auf der Oberfläche der Box. Ich würd's also auf d/2 setzen. Dann haben alle außen liegenden Teilchen den gleichen Abstand zur nächst gelegenen Seite der Box (nämlich d/2). Wenn d < Teilchendurchmesser, bedeutet das, dass die Teilchen nicht in die Box passen (zumindest nicht nach diesem Algorithmus)

Delphi-Quellcode:
if x>f*d then begin
Aus Optimierungsgründen vll besser direkt auf x>70 prüfen. Kann man aber auch so lassen.

Delphi-Quellcode:
x:=1;
Wie kommst du auf 1? Ich würd's wieder auf d/2 setzen (s.o.)

Delphi-Quellcode:
if y>f*d then begin
  y:=1;
  z:=z+d;
end;
Die letzten beiden Punkte gelten auch hier. Außerdem würde ich diese Abfrage in die andere hineinschachteln, da sie ja eigentlich nur aufgerufen werden braucht, wenn y verändert wurde (nach y:=y+d). Falsch wär es zwar nicht es hintereinander zu setzen, kostet aber unnötige Rechenzeit.


Aber wie gesagt, so würde das nur Aufgehen, wenn die Anzahl der Teilchen eine Kubikzahl ist. Denn sonst würdest du ja versuchen, beispielsweise 2,5 Teilchen in eine Reihe zu setzen.
Dafür könntest du aber ja die Anzahl der Teilchen einfach auf die nächsthöhere Kubikzahl erhöhen, dann die Box füllen und anschließend die hinzugefügten Teilchen wieder löschen.

Aber die Idee, es mit der dritten Möhre zu machen, ist gut. Bessere Algorithmen, die die Teilchen ideal gleichmäßig verteilen, auch wenn die Anzahl keine Kubikzahl ist, wären wohl unglaublich kompliziert zu implementieren (vll gibt es so einen Algo bisher sogar gar nicht, genau wie das bisher ungelöste mathematische Rätsel, Punkte gleichmäßig auf einer Kugeloberfläche zu verteiln), erst Recht, wenn die Teilchen unterschiedliche Durchmesser haben.

mr.winkle 3. Mär 2007 20:44

Re: Gasteilchen 3D [Version 1.6!]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nach diesen Änderungen habe ich allerdings das Problem, dass Teilchen aus dem Raum austreten - siehe Screenshot!

Der Code sieht mittlerweile so aus:
Delphi-Quellcode:
var x,y,z:single;
    d,f:single;
    i:integer;
begin
  //T ist das Array mit den Teilchen
  f:=power(high(T),1/3);
  //Der Raum ist 70 Einheiten groß
  d:=70 / f;

  y:=d/2;
  x:=d/2;
  z:=d/2;
  for i:=0 to high(T) do begin
 
    T[i].x:=x;
    T[i].y:=y;
    T[i].z:=z;

    x:=x+d;
    if x>70 then begin
      x:=d/2;
      y:=y+d;
      if y>70 then begin
        y:=d/2;
        z:=z+d;
      end;
    end;

  end;
mit 125 oder auch 52 Teilchen klappt das z.B. einwandfrei, aber mit 81 und 39 siehts sehr falsch aus.

himitsu 4. Mär 2007 08:06

Re: Gasteilchen 3D [Version 1.6]
 
Zitat:

Zitat von mr.winkle
Nach diesen Änderungen habe ich allerdings das Problem, dass Teilchen aus dem Raum austreten.

Wollt ich auch grad erwähnen ... vorallem bei großen Geschwindigkeiten (hoher Energie) kommt dat sehr oft und vorallem weit hinaus vor.


Könntest du nicht abschalten, daß der Raum zurückgedreht wird, wenn man die Trennwand, oder den Ofen einblendet?
[edit]
Ich merk grad, dieses geschieht auch, wenn ich das Fenster verschiebe
und es wird nicht nur zurückgedreht, jetzt wo ich mal das Zoomen entdeckt hab :stupid: ... ist wohl mehr ein [Reset].
[/edit]

Und eigentlich wäre es schön die X-Achse auch noch ändern zu können, wenn die Wand offen ist (Y-Achse > 0).


[add]
was mir eben och noch auffiehl:
Teilchen Bewegen sich durch die Wand.
also nicht durch den winzigen Spalt daunten, sondern direkt durch das Material.
Aber nach den Beshreibungen sollte es ja keine halbdurchlässige Membran sein. :angel:

mr.winkle 9. Mär 2007 14:26

Re: Gasteilchen 3D [Version 1.6]
 
Zitat:

Zitat von himitsu
was mir eben och noch auffiehl:
Teilchen Bewegen sich durch die Wand.
also nicht durch den winzigen Spalt daunten, sondern direkt durch das Material.
Aber nach den Beshreibungen sollte es ja keine halbdurchlässige Membran sein. :angel:

Ja, dass ist auch der Grund warum man die Wand nicht mehr verschieben kann, wenn diese ein wenig angehoben wurde.



Die Kollisionsabfrage bei nicht angehobener Wand sieht folgendermaßen aus:
Delphi-Quellcode:
  if (wandy=0) and wand and (x-r<wandx) then begin
    x:=wandx+r;
    vx:=-vx;
  end;
Das funktioniert auch schon ziemlich perfekt. Allerdings klappt das so ja nur, wenn sowieso keine Teilchen auf der anderen Seite sein dürfen.


Bei hochgehobener Wand setzt dann diese Abfrage ein:
Delphi-Quellcode:
if wand and (x+r>wandx-2) and (x+r<wandx-1) and (vx>0) and (y+r>wandy) then vx:=-vx else
if wand and (x-r<wandx+2) and (x-r>wandx-1) and (vx<0) and (y+r>wandy) then vx:=-vx;
Es gibt also einen Bereich vor der Wand, in dem die Teilchen umgelenkt werden.

Wie könnte ich die letzte Abfrage optimieren, so dass man auch während der Laufzeit die Wand verschieben kann und keine Teilchen (auch bei hohen Geschwindigkeiten) mehr durch die Wand gelangen?

NormanNG 9. Mär 2007 15:12

Re: Gasteilchen 3D [Version 1.6] [benötige Hilfe]
 
Hi,

Delphi-Quellcode:
if (wandy=0) and wand and (x-r<wandx) then begin
wenn ich das richtig deute, ist hier (x-r) die x-Position des Teilchens nach der Bewegung. Das klappt auch für große vx, weil ja dann auch git "<wandx".

Delphi-Quellcode:
if wand and (x+r>wandx-2) and (x+r<wandx-1) and (vx>0) and (y+r>wandy) then vx:=-vx else
if wand and (x-r<wandx+2) and (x-r>wandx-1) and (vx<0) and (y+r>wandy) then vx:=-vx;
bein angehobener Wand wird geprüft, ob die neue x-Position "an" der Wand ist, aber bei großem vx kann die neue Position ja auch weit in oder hinter der Wand liegen. Müsste man nicht einfach prüfen, ob die neue Positon "auf der anderen Seite" der Wand liegt?

mr.winkle 9. Mär 2007 17:27

Re: Gasteilchen 3D [Version 1.6] [benötige Hilfe]
 
Tut mir Leid, dass habe ich vergessen zu erwähnen: Bei X / Y handelt es sich um die momentane Position eines Teilchens, bei r um dessen Radius.

Die Idee mit der Abfrage, welche Position das Teilchen annähme, ist schon mal eine gute Idee. Ich bin mir aber nicht sicher in wie weit ich das implementieren kann, oder wie rechenintensiv die Abfrage ist. Ich werds in jedem Fall einmal ausprobieren :-D
(Da müsste man dann ja sozusagen "vorausrechnen", oder die alte Position abspeichern und mit der neuen vergleichen... ...oder so)

Allerdings gibt es ja dann auch noch das Problem, dass ich während der Laufzeit die Wand verschieben will... da fällt mir überhaupt nichts machbares ein :gruebel:

himitsu 10. Mär 2007 17:24

Re: Gasteilchen 3D [Version 1.6] [benötige Hilfe]
 
Also speichern brauchst du die alte Position nicht, du mußt einfach nur vor dem Verschieben mit den neuen Werten prüfen.

also sozusagen statt
Delphi-Quellcode:
if (X + R > Wand2) or (X - R < Wand1) then Schritt := -Schritt;
X := X + Schritt;
erstmal schauen wo die neue Position wäre und schon vorm Verschieben darauf reagieren
Code:
if (X + [color=#ff0000]Achritt[/color] + R > Wand2)
  or (X + [color=#ff0000]Achritt[/color] - R < Wand1) then Schritt := -Schritt;
X := X + Schritt;
und nicht erst wenn das Teilchen schon in der Wand ist ^^

(hier mal an 'ner geraden PingPong-Bewegung zwischen 2 Wänden)

Gremlin 6. Mai 2007 17:40

Re: Gasteilchen 3D [Version 1.6] [benötige Hilfe]
 
Hallo mr.winkle,


ein sehr interessantes Programm und toll gemacht. Mir sind aber noch
diese Dinge aufgefallen:

- Eine Exception bei Simulation-Presets-Laden und dann
im Dialog abbrechen:

Listenindex überschreitet das Maximum(0)

- Die Gaswolke wird nicht mehr kalt, wenn der Ofen aus ist

- Man weiss nicht wirklich, was die Einstellungen bedeuten
zb. für

Einflüsse Wärme und Ofen fehlt die Angabe der Einheiten

- was bedeutet Partikel?

- die Angabe der Simulationswerte sehen für mich unvollständig und
ein wenig unübersichtlich aus

- die Mausbedienung sollte beschrieben sein

- das Maus Scrollrad sollte eine Zoom-Funktion in der Gaswolke auslösen

- die Hints sind unvollständig und sagen nicht sehr viel aus,
zb. bei Wand: "aktiviert eine Wand" oder Radius: "Stellt den Radius ein"

- warum sind Teile des Menüs in fsBold?

- wo ist denn der Unterschied von Ofen zu Wärme

- eine Stop/Start-Funktion wär nicht schlecht, dann kann man die Simulation
für einen Punkt anhalten, betrachten und anschliessend fortsetzen.


Grüsse von Gremlin

mr.winkle 16. Mai 2007 21:17

Re: Gasteilchen 3D [Version 1.6]
 
Hallo Gremlin,
danke erst einmal, aber du hast dich anscheinend nur oberflächlich mit dem Programm beschäftigt, denn ein paar Kritikpunkte sind wirklich nicht gerechtfertigt.

Zitat:

Die Gaswolke wird nicht mehr kalt, wenn der Ofen aus ist
Warum sollte das Gas auch erkalten? Es handelt sich um eine physikalische Simulation bei der Schmutzeffekte wie Reibung und auch verlorene Energie bei Stößen außer Acht gelassen wird, da sie ausschließlich der Veranschaulichung gilt.

Zitat:

was bedeutet Partikel?
Bei aktivierter Checkbox wird zusätzlich ein sehr großes Teilchen erstellt - man kann nun beobachten wie dieses hin und hergestoßen wird (siehe Brownsche Molekularbewegung)

Zitat:

die Angabe der Simulationswerte sehen für mich unvollständig und ein wenig unübersichtlich aus
Kann ich nicht nachvollziehen.

Zitat:

die Mausbedienung sollte beschrieben sein
Vielleicht so wie ich das im ersten Post gemacht habe?

Zitat:

das Maus Scrollrad sollte eine Zoom-Funktion in der Gaswolke auslösen
siehe erster Post->Zoomen rechte Maustaste!

Zitat:

- warum sind Teile des Menüs in fsBold?

- eine Stop/Start-Funktion wär nicht schlecht, dann kann man die Simulation
für einen Punkt anhalten, betrachten und anschliessend fortsetzen.
Hättest du auf die extra Fettgeschrieben Menüpunkte geachtet wäre dir sicher auch die bereits integrierte Stop/Start-Funktion aufgefallen.

Zitat:

- wo ist denn der Unterschied von Ofen zu Wärme
Dafür solltest du einmal in die von dir kritisierten Hints schauen, der Ofen beschleunigt ausschließlich die Teilchen in seiner Nähe, zusätzlich werden die Teilchen schneller beschleunigt je näher sie dem Ofen sind.

Naja, danke jedenfalls fürs drüberschauen ;)
Ich habe vor bald die nächste Version zu releasen - in der kann ein Schwerefeld aktiviert werden - der Realisation der Lavalampe steht nichts mehr im Wege ;)

grizzly 17. Mai 2007 06:50

Re: Freeware: Gasteilchen 3D [1.6] (Facharbeit Informatik)
 
Cooles Progrämmchen. Gefällt mir.

Was mir aufgefallen ist: Schiebt man die Wand in die Mitte und dann nur ein klitzekleines bisschen nach oben (das gibt eine kleine Verbindung zwischen den beiden Hälften), dann füllt sich sofort der ganze Würfel (wurde glaube ich in einem anderen Post schon erwähnt). Das sonderbare: Schließe ich die Wand wieder, dann sind sofort alle Teilchen wieder auf der ursprünglichen Seite. Hast Du da so was ähnliches wie einen Maxwellschen Dämon eingebaut? ;)

Beim Beenden gibts auch bei mir noch einen "Unbekannten Softwarefehler (0x0eedfade) an der Stelle 0x7c812a5b, gefolgt von einer Exception EGLContext bei 0008F0E5 (Context activation failed C0070006). Das geht dann noch 'ne Weile so weiter...

Genug gemeckert, ansonsten gefällt mir das Programm. Das wuselt...

Gruß
Michael

Gremlin 17. Mai 2007 14:44

Re: Freeware: Gasteilchen 3D [1.6] (Facharbeit Informatik)
 
@mr.winkle

Ich finde dein Programm trotz der Fehler ganz gut, aber ich denke du hast mich
nicht verstanden. Ich weiss was deine Funktionen bedeuten, nur erschliessen
sich diese erst, wenn man mit dem Programm eine gewisse Zeit gearbeitet hat.

Verstehe mich nicht falsch, aber zu einem Programm gehört auch eine Oberfläche,
die - natürlich nur im optimalen Fall - selbsterklärend sein sollte.
Und bei deinem Programm könnte man noch bestimmte Punkte verbessern, wenn ich
mir die Anmerkung erlauben darf (den linkem Bereich finde ich iO..)
Dazu gehört insb. das man weiss, das die Bezeichnung "Statistik/Überwachung"
klickbar ist, das die Checkboxen und Schieberegler erst nach Betätigung erkennen
lassen, welche Funktion wirklich dahinter steckt, verschieden Bedienelemente Hints
und andere keine haben und manche Regelelemente auf Beschreibungen verzichten
müssen.

Einige Beispiele für GUI die man verbessern kann:

CheckBox "gleiche Farben", besser "Alle Teilchen besitzen die gleiche Farbe"
CheckBox "Wand", besser "Eine Wand aktivieren, die über X/Y ..."
CheckBox "Ofen" mit Schieberegler ohne Angabe von Einheiten oder Größenangaben
Diverse Hints fehlen.
...


Wenn du IMHO in diesem Teil noch ein wenig Arbeit reinsteckst, ist das Programm
gleich viel besser.

mr.winkle 17. Mai 2007 15:09

Re: Freeware: Gasteilchen 3D [1.6] (Facharbeit Informatik)
 
Danke Gremlin, so hilft mir das schon viel besser *THUMBS UP*
werde die genannten Punkte in der nächsten Version ändern

mr.winkle 23. Nov 2007 16:58

Re: Freeware: Gasteilchen 3D [1.6] (Facharbeit Informatik)
 
Ihr findet nun die neueste Version von Gasteilchen 3D im ersten Post.
Darunter sind viele Detail- und Performanceverbesserungen, außerdem wurde am Interface etwas gearbeitet. Die Voreinstellungen sind im Zip-Archiv bereits enthalten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz