QuatFract

deutsche Version

Intro
Downloads
Screenshots
MPEG movies
Zooming Sequenz
CVS history
Project Diary
Documentation
Contact

Intro

QuatFract is a GTK (resp. gtkmm) program for interactive discovery of Julia sets in quaternion space. Those are fractal shapes, whose surface is visualized by polygonization algorithms with the help of OpenGL. QuatFract was started as a software practical and is under further development now. In addition to our QuatFract fractal viewer we implemented a generic Viewer C++-class which can be used as starting point for arbitrary OpenGL viewing programs.

Features

Downloads

The new sources use autoconf/automake so you just can type ./configure and make to compile quatfract.

qf-13.10.02.tgz CVS snapshot 13.10.02
qf-pract-rel.tgz Praktikums-Ende-Release

Or use anonymous cvs to directly check out the newest sources:
cvs -d :pserver:anonymous@pille.iwr.uni-heidelberg.de/export/home/softpr2/cvsroot login
hit enter when password is prompted, and then check out the sources with
cvs -d :pserver:anonymous@pille.iwr.uni-heidelberg.de/export/home/softpr2/cvsroot co quat

Screenshots

Juliamenge des IFS x^2 + C mit Cube-Rendering
the new features: LightControl, Cutter,
spline interpolation and Progress Bar
C = [ -0.2 0.8 0 0 ] C = [ -1 -0.13 0 0 ], 131388 polygons

MPEG movies

QuatFract has a so called WaypointEditor and a PovrayOutput window. With the WaypointEditor interactive waypoints can be set around the visualized fractal. They are then connected by a natural spline and a camera flight is rendered into povray scene files. The following mpegs were created in that way:

MPEG movies
cubic Julia set / C = [ 0.2 1.15 0 0 ] quadratic Julia set / C = [ -1 -0.13 0 0 ]

Project diary add entry

Datum Eintrag
10.Feb 05
19:22:01
(mwiehle2) So, die Version, die auf den GTK 2 Bibliotheken aufsetzt ist eingecheckt. Unterverzeichniss ist quat_gtk2. Checkt sie aus mit: cvs -d :pserver:anonymous@pille.iwr.uni-heidelberg.de/export/home/softpr2/cvsroot login Bei der Passwortabfrage einfach ENTER drücken und danach: cvs -d :pserver:anonymous@pille.iwr.uni-heidelberg.de/export/home/softpr2/cvsroot co quat_gtk2 Welche neuen Bibliotheken Ihr braucht steht im README. Falls es Probleme beim Kompilieren gibt bitte berichtet mir: mwiehle2(instead-of-spam-put-an-at-sign-here)ix.urz.uni-heidelberg.de ACHTUNG ! Die Portierung ist noch nicht abgeschlossen. Der 2D Schnitt funzt z.B. noch nicht.
10.Feb 05
17:48:55
(mwiehle2) Die Portierung auf die anderen Bibliotheken ist fast abgeschlossen - der Cutter funktioniert noch nicht u.ä., aber im großen und ganzen läufts. Das ganze wird gleich eingecheckt. Ausserdem habe ich noch nen kleinen Bugfix für die Gtk1.2 er Version eingecheckt.
17.Dec 04
01:35:00
(mwiehle2) Jau, nach langer Zeit schraubt mal wieder jemand an quatfract. Ich habe mir vorgenommen, zunächst den Code auf einen aktuelleren Stand zu bringen. gcc 2.95.4 -> 3.3.4 gtk+/gtkmm 1.2.10 -> 2.4. gtkglareamm 1.1.1 -> gtkglext 1.0 GCC 3.3.4 compiled schon allerdings noch mit Warnings. Jetzt gerade schreibe ich ein Makefile.am um automake nutzen zu können. Als nächstes werde ich mich wohl schrittweise durch \"Porting applications to the GNOME 2.0 platform\" (http://developer.gnome.org/dotplan/porting/) durcharbeiten. Aber das wird sich vermutlich noch etwas hinziehen.
04.Nov 02
00:02:48
(dreiche2) guten abend! Ich bin ja auch schon seit längerer zeit in meinem kämmerchen damit beschäftigt, alles über den haufen zu werfen. Achja, und außerdem wollte ich die Programmstuktur verändern ;), um alles übersichtlicher und praktischer zu gestalten, primär erstmal, was die realisierung der maussteuerung angeht. die idee war, eigene klassen für die verschieden möglichen steuerungen zu schreiben, welche dann als unterobjekte z.B. im Generic Viewer auftauchen und bei bedarf durch einen einfachen methoden aufruf aktiviert werden können. damit würde ein großteil des jetzigen mehrfachen überschreibens der virtuellen kontroll methoden und integer abgefrage (if mode==1... blabla) wegfallen. im Viewer selbst wären keine steuerungen mehr enthalten; stattdessen hat er einen pointer auf mögliche kontroll objekte und allerlei passende methoden zum aktivieren der objekte, automatischem connecten von signalen etc. der viewer bietet dann also eine geeignete basis struktur, so dass man dann in seinem abgeleiteten viewer hübsch modal verschiedene steuerungsobjekte als unterobjekt einbauen kann, gerade wie mans braucht. Das ganze system findet insbesondere auch anwendung auf die über steuerung verfügenden unterfenster. Auch fällt mir noch manches ein, wo man eine ähnliche struktur realisieren könnte, z.b. eine liste mit \"draw-objects\" im viewer, usw. Naja aber wie auch immer, was die realisierung dieser kontroll struktur angeht, darf ich feierlich verkünden: Ich bin noch nicht fertig! Naja fast alles steht schon, aber es fehlt noch ordung und dokumentation im code, und ich muss mir ja auch noch ausdenken, was ich jetzt alles in den changelog schreiben soll, und das braucht noch a bisserl... wollte das ganze in dem zustand noch nicht einchecken. vielleicht haut mich der tobi morgen, dann check ichs eben trotzdem ein. gute nacht!
13.Oct 02
03:05:31
(tdyckerh) hab heute endlich mal die Makefiles ausgemistet. Sie werden jetzt erstens mittels autoconf erzeugt und zweitens ist in jedem subdirectory eines (das ist übersichtlicher). Ein Debian-Paket steht auch schon, muss allerdings noch getestet werden.
...read more.

documentation

At the end of our practical we wrote a report (german). It contains both a short mathematical description of the quaternions and the algorithms we used and partly developed for the visualization. Furthermore you can find a description of the structure of the code and a short example on how to use our generic Viewer as starting point for your own programs.
A class reference created with doc++ summarizes the classes we used and may act as documentation for the use of the Viewer class.

contact

If you got questions, suggestions or critique just let us know:

David Reichert
Max Wiehle
Tobias Dyckerhoff

Tobias Dyckerhoff
Last modified: Mon Mar 10 17:12:59 CEST 2003