Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki

Aktuelle Zeit: Di Sep 02, 2014 02:49

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Jan 21, 2012 13:51 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
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 :wink: 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:
Bild

Das Lorenz-System:
Bild

Rössler:
Bild

Dual-Screen-Support (mein Arbeitsplatz :D )
Bild



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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Zuletzt geändert von Carmageddon am Mi Mär 21, 2012 12:00, insgesamt 2-mal geändert.

Nach oben
 Profil  
 
BeitragVerfasst: Sa Feb 18, 2012 15:05 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
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)
Bild

Mit berechneten Normalen und 2 Lichtquellen sieht das ganze auch schon etwas freundlicher aus:
Bild


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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Nach oben
 Profil  
 
BeitragVerfasst: Mi Mär 21, 2012 11:56 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
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)

Bild

Bild

Bild

Bild


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
Bild



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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Nach oben
 Profil  
 
BeitragVerfasst: So Apr 22, 2012 20:47 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
Mal ein kleines Update:
Das Projekt lebt noch, nur hab ich zurzeit wenig Zeit zu programmieren. Hab angefangen mich mal mit Shadern auseinanderzusetzen - und ich habe viele Ideen - inwieweit die sich umsetzen lassen weiß ich noch nicht so genau.

Bisher habe ich nur einen einfachen perPixel-Shader zum laufen bekommen, der die Tage ausgebaut wird:

Bild



Den Multi-Screen-Support habe ich im Moment deaktiviert, da es so wie ich es jetzt mache absolut ineffizient ist (Renderkontext wechseln und dasselbe nochmal zeichnen). Mal schauen was mir da einfällt. Auch das Problem mit dem Vorschaubild besteht noch, da werde ich schauen was sich machen lässt

lg

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: Yahoo [Bot] und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de