XAOS TUTORIAL This is text version of tutorial. For html one (with images) see http://www.paru.cas.cz/~hubicka/XaoS _________________________________________________________________ Why use XaoS We decided to make XaoS, because all fractal browsers we know needs long time to calculate every image. You may browse nice images generated by them but real impression from fractal - they self similarity and possible infinite zooming into nice part of fractals can be seen only in animation. There are many programs available that makes nice animations but they takes long time to calculate and lots of space on disc. Most of animations are quite ugly because their authors can't see it without many hours of calculations. I found special algorithm that saves up to 99.98% of calculations during zooming. I am not first, who discovered it. Later I found some demos, that makes real-time zooming but I don't know any that is interactive and as fast as XaoS. XaoS is able to generate full-screen 320x200 animation on 486 in reasonable speed (5-20 frames per second). It uses several methods to save calculation - Uses pixel from previous image, solid guessing, symmetry, avoids calculation inside Mandelbrot set and much more. _________________________________________________________________ How to zoom Main advantage of XaoS is that after few seconds needed to calculate first image you may choose some point by mouse and press left button. Image will start to zoom smoothly into point you choose. You may move mouse and zoom smoothly into interesting areas. By pressing middle button (or left+right) you may also move image using "drag & drop" in case you missed some interesting place. UN-zooming is also possible by right button, but it is much slower because optimizations are not so effective as for zooming. By pressing button here: After six seconds of zooming: XaoS at startup XaoS after zooming To make this animation XaoS calculated more than 25*6 frames of 320*200 pixels. Every pixel needs aprox 60 iterations. So by normal algorithm you need: 25*6*620*200*60 = 576000000 iterations! Suppose that every iteration on some computer with Mandelbrot coprocessor needs one instruction. On 66MHz it needs 8 seconds to calculate it! In case you think that default speed is boring (it is quite slow to make XaoS smooth on slow computer) you may change it by pressing arrow up/down. But understand that faster zooming is more expensive so if speed is too high you should see just funny colorfull blinking rectangles. _________________________________________________________________ Autopilot To make XaoS yet more impressive we did special autopilot that automatically drives into interesting boundaries of set. So you should press 'A', play your favorite music, drink coffee and relax. I never tried this but it should be really relaxing! Many pictures in XaoS gallery are discovered using autopilot. Autopilot has also some additional features. It return back in case zoomed picture is not interesting anymore. Also is able to detect, when zoomed into really boring part or reached limit of floating point numbers and restart zooming. _________________________________________________________________ Various fractal formulas XaoS also supports other formulas than Mandelbrot set. You may change formula using keys '1' - '0'. On keys '1' - '5' are Mandelbrot sets with various power. The "normal" Mandelbrot set is: z=z^2+c on key '1'. For example on key '3' is z=z^4+c. On key '6' is fractal called octo. It is some fractal that Thomas discovered in fractint. Looks nice in other planes..see bellow. On key '7' is Newton. It is famous newton formula for finding roots. On key '8' is Bernsley. It is another formula comming from real world.. I forgot what means. On key '9' is Phoenix. It is very nice and quite famous fractal. On key '0' is Magnet. This fractal has quite complex formula so it is bit slow. _________________________________________________________________ In-coloring modes To make fractal yet more interesting more coloring modes for points outside set are provided. "Classical coloring mode" uses number of iterations that orbit required to escape boundaries. After pressing 'C' following menu is displayed: Please select outcoloring mode: 1 - iter 2 - iter+real 3 - iter+imag 4 - iter+real/imag 5 - iter+real+imag+real/imag 6 - binary decomposition 7 - biomorphs Now you may choose mode by pressing key '1' - '7' Those crtyptic names are mathematical formulas where iter means number of iterations, Real real coordinate of last orbit, Imag imaginary coordinate of last orbit. iter this is classical coloring mode that takes number of iterations iter+real this mode takes number of iterations and adds real part of last position of orbit iter+imag similar to previous one except takes imaginary part iter+real/imag as previous but adds real part divided by imaginary part. There is no mathematical reason for it. Just looks well.. iter+real+imag+real/imag this is summary of all previous modes.. binary decomposition takes number of iterations in case that imaginary part is greater than zero. Otherwise takes maximal number of iterations minus number of iterations biomorphs takes number of iterations in case that imaginary or real part is inside boundaries. Otherwise takes maximal number of iterations minus number of iterations _________________________________________________________________ In-coloring mode Similiar to out coloring mode is in coloring. It is only way how to display thinks inside set. Only one mode is provided. Takes color by magnitude of Z. It can be enabled by pressing 'F'. Press of again to disable it. _________________________________________________________________ Planes All fractals displayed by XaoS are function with complex parameter. It can be displayed in normal complex plane where x is real part of number and y is imaginary. But may be also displayed in some other planes. After pressing 'I' following menu is displayed: Please select display plane: 1 - mu 2 - 1/mu 3 - 1/(mu+0.25) 4 - lambda 5 - 1/lambda 6 - 1/(lambda-1) 7 - 1/(mu-1.40115) Another cryptic names. And, you guessed, another mathematical formulas. Here mu means coordinates in normal complex plane. In case you have coordinates in 1/mu plane and you need complex plane (to calculate mandelbrot) you simply use coordinates as variable mu. Lambda is another plane that can be converted to mu using similiar formula. mu normal mode.. 1/mu Inversion-infinity is in 0 and 0 is in infinity. 1/(mu+0.25) Similar to inversion but moves center outside of Mandelbrot so it looks parabolic lambda lambda plane 1/lambda Inversion of lambda plane 1/lambda-1 Inversion with moved center 1/(mu-1.40115) Very interesting mode for Mandelbrot set. Makes small thinks big. So you can browse its details. _________________________________________________________________ Mandelbrot/julia switching Most of fractals displayed by XaoS (currently all of them) have two forms: Mandelbrot and Julia. Every point in Mandelbrot form has its own Julia set. You may display it moving mouse to point you selected and pressing 'M' . To return back press 'M' again. Some fractals (barnsley and phoenix) are already in their Julia versions, because Mandelbrot ones are boring. But by pressing 'M' in such fractal you should get to Mandelbrot version and by choosing another point as base and pressing 'M' again you should get completely different fractal. The most interesting points for Julia sets are at boundaries of Mandelbrot set. Most of Julia inside or outside set are boring. By pressing 'M' here: You will get following Julia: XaoS at startup Julia version _________________________________________________________________ Fast julia preview mode New to 2.2 releasi is Fast julia preview mode. It is sollution for question: What point use as base for julia set. Just press 'J' and small julia set will be displayed at top left corner. Then move mouse arround with pressed button 1 and julia to corresponding point will be automatically generated. Note that this function works just for Mandelbrot power 2-6, barnsley and partially magnet fractal. Also output isn't perfect especially with magnet fractal differs from real one. Fast preview mode Fast mode _________________________________________________________________ Palette changing In case you think that default XaoS colors are ugly or you are just bored by them you may try to change it by pressing 'P'. XaoS will generate automatically random palette. Many of them looks ugly so press 'P' again to get different one. UNIX/X11 specific note: In 8bpp pseudo-color X11 colors can look very ugly, because palette is shared with other programs and when XaoS can't allocate its palette it simply uses simpler one. Also changing of colors takes long time. To avoid this use true-color or hi-color displays, close some colorful applications like netscape, or use -private switch. Using -private speeds up palette changing or rotation, because recalculation of mandelbrot after every change is not required. Different mandelbrot Changed palette. _________________________________________________________________ Palette cycling This is very old trick that makes mandelbrot set more interesting. You may enable/disable it using 'Y'. This trick is easy to implement on clasical PC VGA cards. At other platforms this should be implemented by other way than normal palette changing, pecause palette is shared with other programs(X windows in pseudocolor) or truecolor display does not have palette at all. XaoS emulates this feature at most such platforms but this emulation should slow down a much. For example at truecolor or text displays this requires redrawing of whole screen Some drivers does not support it at all. And at X11 with 8bpp pseudocolor palette rotation does not work in default shared palette mode. You need to use -private switch to enable this feature. When palette rotation is enabled, you may control its speed using key left and right. Normally this keys are used for changing number of iterations. See following part. _________________________________________________________________ Changing number of iterations To calculate fractals perfectly you need infinite number of iterations. XaoS does just first few of them so after longer zooming you may get into place that looks quite boring and boundaries of set are rounded w/o any interesting details. This should be changed by changing number of iterations: Press and hold arrow left and wait until iterations are high enough. This may slow down calculation much..to reduce number of iterations press arrow right. _________________________________________________________________ Random dot stereograms Fractal images are also good as base for random dot stereogram. In case you don't know what this mean, please point your browser to altavista or other searching engine and find some article about this images because browsing such images is not easy. They makes possible to generate three dimensional images at normal monitor without any additional hardware. To enable this mode press 'E'. XaoS is also able to generate this images in animation so you may use all normal XaoS functions except palette changing/rotation, because this is unnecesary. To make animation yet more exciting XaoS emulates "falling" into the set. So during zooming distance from set is getting lower and lower. But never lets you fall down so when set reeaches level of your monitor distance is changed again and you are far away. To make this in real sizes xaos needs to know exact sizes of your monitor. Because most platforms does not know this values you need to use command line options to tune this. Otherwise you should have problems with seeing anything in images generated by XaoS (in case your monitor is too big or resolution low). Or images are not as deep as normaly (in case your monitor small or resolution high). By default xaos expect my 15" monitor (29.0cm x 21.5 cm). Another problem is virtual screen supported by some windowed enviroments(like X11) that makes program think that resolution is higher and you see just part of this screen. This cause problem with recalculation screen size to pixel size. The worst think you should do at all is to run fullscreen XaoS in some graphical window(windows 95 or OS/2 ?) where XaoS don't know that real size of his window is different. Following command line options are provided for this. -screenwidth -screenheight lets you specify size of your screen in centimeters. Note that you need to specify size of image at you monitor. Not size with some borders or such. -pixelwidth -pixelheight lets you specify exact size of one pixel in cases I described bellow. This options are used by some other parts of XaoS too. So you should use them even you don't want to see stereograms. You should write small starting script that passes correct parameters. Another problem should happend when window is smaller than 8cm. In this case you will be unable to see anything. So correct way to see XaoS stereogram is: * start XaoS with options specifying corect size of screen or pixel * Sit 60cm away from monitor * Put your eyes to distance 8.5 cm from each other :) * In case you use windowed enviroment resize XaoS window to make it wider than, say, 15 cm. * press 'E' * concentrate far away from monitor(you should try to use your reflection..) until random points will get into different distances and you will see mandelbrot * Curefully use you mouse to zoom into interesting areas(it is easy to lose concentration when you are not trained. Or use autopilot. * Enjoy animation :) Last problem should be that fractal is deformed This can be caused by wrong geometry of your monitor. Eye is extremly ensible for distances so should see very small changes in geometry that are normally unvisible. Example _________________________________________________________________ Changing of resolution XaoS usually starts in low resolution (320x200 or so) to make calculations faster. In case you have fast computer or you need to save bigger .gif images you may change resolution. This should be done by pressing '=' in full screen drivers or simply by resizing XaoS window. _________________________________________________________________ Changing of driver XaoS usually have more than one driver available. You may change it on the fly in case you want different one. For example XaoS started in X windows and you want to use curses driver. This can be done by pressing 'V'. This action is bit dangerous, because XaoS can crash during inicialisation in case of some unexpected problem. Also colormap is set to default one. _________________________________________________________________ Solid guessing XaoS used solid guessing. This mean that when it wants to calculate pixel but all pixels around are blue it simply expects that this pixel is blue too. This speeds up a much but also may cause inexact results. Especially after zooming when error is propagated. Many fractals fans now asks why I don't use boundary detection. Please see ahgorithm descriptions that explains why I decided for solid guessing. You may solve this problem by two ways: * press 'R' to let XaoS recalculate image * use 'G' to control solid guessing. After pressing 'G' folliwing menu is displayed: Plase select solid guessing mode 1 - solid guessing disabled 2 - guess maximally 2x2 rectangles 3 - guess maximally 3x3 rectangles 4 - guess maximally 4x4 rectangles 5 - guess maximally 5x5 rectangles 6 - guess maximally 6x6 rectangles 7 - guess maximally 7x7 rectangles 8 - guess maximally 8x8 rectangles Now you may choose range. Default is 2x2. Larger range means faster calculation and less exact results. By pressing '1' you may disable this feature. _________________________________________________________________ Drawing options Sometimes calculations takes so much time so framerate should fall very very low. In this cases xaos automatically reduces details so animation is still quite smooth. You may control This feature by pressing 'T'. Following menu is displayed: Plase select drawing mode 1 - fast drawing disabled 2 - use only during animation 3 - use also for new images This lets you choose when such resolution lowering is possible. By pressing '1' you may disable it at all. '2' is the default mode. '3' enables this also for new images. So when XaoS recalulates screen nice pixelizing effect is performed. Only disadvantage is that it is slower than normal calculation. _________________________________________________________________ Status informations After pressing '?' you may invoke displaying of status information. In this list you may find all informations about current image. Example status: Fractal name:Mandelbrot Fractal type:Mandelbrot View:[-2.416666666667,-1.250000000000] size:[3.333333333333,2.500000000000] Screen size: 158:98 Iterations: 128 Palette size:248 Autopilot:Off Plane:mu zoomspeed:8.000000 incoloring:iter outcoloring:iter Parameter:noneiter _________________________________________________________________ Other functions Image saving By pressing 'S' you may save current image into interlaced gif image. Fractal is recalculated before saving to get best possible output Interrupting of calculation By pressing 'Z' you may interrupt current calculation in case it is too long and you know that it is bad.. Displaying of current status By pressing space during calculation you may invoke displaying of current status. It looks bit strange because some part are already calculated and some part are from some old image. But you may guess how result will look like.. Online help By pressing 'H' hyperuglytext viewer with help text is displayed. Using keys '1' and '2' you may browse help. Quit This is really not necessary..but by 'Q' you may quit XaoS. _________________________________________________________________ Curses driver Curses driver bit differs from normal drivers because it allows you to display real-time zooming on text terminals. It has many advantage over other drivers so I will quickly describe them. _________________________________________________________________ Online help Online help briefly describing keys is also available by pressing 'H'. Very significant part is at the end where is documentation specific to your driver. It may contain some interesting informations not contaned in documentations about XaoS at all. _________________________________________________________________ Command line options as every good program XaoS also have command line options. Run xaos -h for help, or see xaos.1 or xaosman.txt for more documentation. _________________________________________________________________ Interested in more informations? You may subscribe to our discusion about XaoS at majordomo@horac.ta.jcu.cz by sending message Subscribe xaos you may also subscribe xaos-announce in case you want to be informed about new releases or xaos-devel in case you want to become XaoS developer (and you will be welcomed) _________________________________________________________________ Send all comments, questions, suggestions, etc... to Jan Hubicka, hubicka@limax.paru.cas.cz Copyright © 1996 by Jan Hubicka. All rights reserved. Last Modified: Fri Jul 26 14:09:01 CDT 1996