
   
   
                                 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 &copy; 1996 by Jan Hubicka. All rights reserved.
   Last Modified: Fri Jul 26 14:09:01 CDT 1996
