DGL https://delphigl.com/forum/ |
|
Bildschirmschoner "Seltsame Attraktoren" https://delphigl.com/forum/viewtopic.php?f=13&t=10267 |
Seite 1 von 1 |
Autor: | Carmageddon [ Sa Jan 21, 2012 13:51 ] |
Betreff des Beitrags: | Bildschirmschoner "Seltsame Attraktoren" |
Hallo allerseits, ich wollte hier mal mein neustes Projekt vorstellen, was ich die letzten Wochen programmiert habe: Bildschirmschoner "Seltsame Attraktoren" Was bitte soll den ein seltsamer Attraktor sein? Wer sich ein bischen mit Naturwissenschaften oder Mathematik beschäftigt kommt an Differentialgleichungen nicht vorbei. Keine Angst, ich will hier keine Mathe-Vorlesung über DGLs halten aber ein bischen will ich euch erzählen: Wer nicht weiß, was eine Differentialgleichung ist, kann hier gucken. Ein- oder zwei-dimensionale Systeme von Differentialgleichungen sind "weniger intressant", da man beweisen kann, dass da dort alle ordentlich vonstatten geht - es kann kein Chaos (wobei nicht klar ist, was den eigentlich "Chaos" sein soll) auftreten. Für drei dimensionale System sieht das schon anders auf - Dort treten sogenannte "Seltsame Attraktoren" (und noch schlimmere Arten von Chaos) auf: Das Paradebeispiel ist wohl der Lorenz Attraktor. Das ist ein paar von Punkten zwischen denen die Lösung der Differentialgleichung hin und her springt ohne jemals sich für einen zu entscheiden. So ein Verhalten ist natürlich höchst intressant, sowohl vom mathematischen als auch vom physikalischen Sinne her. Als Mathematiker intressiert mich natürlich vorwiegend die Mathematik, und hier insbesondere die numerische Berechnung von Lösungen. Da ich Mathe-Student bin und so langsam mit der Bachelor-Arbeit anfangen sollte habe ich mir überlegt über was ich den schreiben könnte. Mein Wahl ist dann auf "Numerische Integration von Differentialgleichungen" gefallen, ich muss es nur noch vom Prof absegnen lassen. Wie auch immer: Was nützt das schönste Verfahren wenn man es nicht programmieren kann? Also habe ich ein paar Verfahren implementiert - speziell Runge-Kutta-Verfahren. Dabei kamen recht hübsche Bilder raus und ich dachte mir: Es wäre doch ein netter Bildschirmschoner, wenn man beobachten kann wie sich die Lösungen von intressanten Differentialgleichungen sich in der Zeit entwickeln. Gesagt getan: Hier ist eine Beta-Version des Bildschirmschoners. Technische Details: - Delphi-VCL Umsetzung mit OpenGl - Beliebig viele Bildschirme - sogar mit unterschiedlicher Auflösung - werden erkannt und unterstützt - Preview und Optionen werden im Bildschirmschoner-Auswahlmenü unterstützt Mathematische Details: - Es werden zwei Lösungen mit verschiedenen zufälligen Anfangswerten parallel berechnet - Es wird ein explizites Runge-Kutta-Verfahren 4ter Stufe mit konstanter Schrittweite eingesetzt - bisher 4 verschiedene chaotische System: Lorenz, Rössler, Aizawa, Lorenz63 Installation: - Zum Testen einfach Doppelklick auf die *.scr Datei - Zum Installieren die scr datei nach system32 kopieren und als Bildschirmschoner auswählen Bekannte Bugs - Bisher nur auf Windows XP getestet! - Die Preview flackert ToDo's - Bugs beheben! - Ein bischen mehr Grafische Extras einbauen, damit es noch intressanter aussieht - mehr System implementieren Hier sind ein paar Bilder: Das Aizawa-Modell: Das Lorenz-System: Rössler: Dual-Screen-Support (mein Arbeitsplatz ) DOWNLOAD ----------------------------------------------------------- Version v0.1 - als Bildschirmschoner lauffähig: Hier gibt es die compilierte scr Datei und hier gibt es den Code für die Beta-Version ----------------------------------------------------------- Version v0.2 - nicht als Bildschirmschoner lauffähig Download sslorenz_v02.scr (ohne Quellcode) Mit Num1-Num4 zwischen den Systemen wechseln, mit ESC oder einer Mausbewegung beendet man das Programm ----------------------------------------------------------- Version v0.21 - eingeschränkt als Bildschirmschoner lauffähig Code und Exe: Beta v0.21 Steuerung: a-l : System auswählen Num4, Num6, Num 8, Num2: Lichtquelle verschieben Num-Plus, Num-Minus: Zoomen Pfeiltasten (rechts, links): Ansicht drehen Leertaste: Koordiantensystem einblenden Strg: Pause ESC: beenden lg Carmageddon |
Autor: | Carmageddon [ Sa Feb 18, 2012 15:05 ] |
Betreff des Beitrags: | Re: Bildschirmschoner "Seltsame Attraktoren" |
So, hier mal ein kleines Update. Ich gehe davon weg zwei Lösungen gleichzeitig zu berechnen und auszugegeben, da ich die Grafik ein bischen aufpoliert habe und es da nicht so toll aussieht. Um die Lösung - die weiterhin mit einem expliziten Runge Kutta Verfahren 4ter Stufe berechnet wird - wird eine Art Zylinder berechnet, welcher anschließend durch Triangulation und Normalenberechnung ein recht anssehnliches Bild ergibt. Das Gitternetz sieht dann so aus: (Ich glaube es waren 5 Unterteilungen) Mit berechneten Normalen und 2 Lichtquellen sieht das ganze auch schon etwas freundlicher aus: Bugs - Das Gitternetz dreht sich manchmal um gut 180 Grad um seine Achse was zu eine Art "Knoten" führt, dies passiert wenn sich das Vorzeichen der z-Komponenente des Punktes ändert um den ich das Gitternetz aufziehe - Manche Normalen werden nicht richtig berechnet, was zu grauen Dreiecken auf dem Zylinder führt - Beim wechsel auf den anderen Bildschirm verdreht es mir die Orientierung der z-Achse, siehe Bild - Das Flackern im Preview-Fenster habe ich noch nicht beheben können Ich weiß (noch) nicht genau woran das liegt, dass beim wechseln auf den zweiten Bildschirm die Orientierung zerstört wird. Hier ist eine Vollbildaufnahme meiner beiden Bildschirme, man kann es vll erkennen. Bild ToDos - Bugs beheben - Mehr Systeme implementieren - Die Farbquellen ein variabel gestallen, anstatt wie jetzt feste Farben vorzugeben Hier findet ihr eine Version zum angucken. Einfach einen Doppelklick auf die src-Datei. Diese Version ist nicht als Bildschirmschoner geeignet, da sie keinen automatischen Wechsel der Systeme enthält. Man kann mit Num1 - Num4 zwischen den System durchwechseln Download Seltsame Attraktoren v0.2 |
Autor: | Carmageddon [ Mi Mär 21, 2012 11:56 ] |
Betreff des Beitrags: | Re: Bildschirmschoner "Seltsame Attraktoren" |
Die letzten Tage hatte ich wieder Zeit um weiterzuprogrammieren. Ich habe einige Bugs gefixt: Das Gitternetz dreht sich nun nicht mehr um 180 Grad, die Normalen werden nun richtig berechnet und beim wechseln der Renderkontextes hab ich vergessen den Tiefentest zu setzen, was die Orientierung zerstört hat. Desweiteren habe ich nun weitere System hinzugefügt. Es sind nun 12 Systeme verfügbar. Mit einigen Schwierigkeiten funktioniert nun auch die Schattenroutine richtig - realisiert per Stencil-Buffer. Hier sind nun erst mal ein paar Bilder: (ja, die Farben sind alle noch im Beta-Stadium ^^ muss alles noch harmonisiert werden) Ich habe mal ein Video erstellt für die, die sich nicht unbedingt etwas runterladen wollen: Die FPS einbrüche liegen an Bandicam, nicht an meinem Programm, es läuft bei mir flüssig Wer sich den Code und/oder die .scr anschauen will, kann hier (Beta v0.21) alles herunterladen. Steuerung: a-l : System auswählen Num4, Num6, Num 8, Num2: Lichtquelle verschieben Num-Plus, Num-Minus: Zoomen Pfeiltasten (rechts, links): Ansicht drehen Leertaste: Koordiantensystem einblenden Strg: Pause ESC: beenden |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |