diff options
Diffstat (limited to 'help/xaos.hlp')
-rw-r--r-- | help/xaos.hlp | 3996 |
1 files changed, 3996 insertions, 0 deletions
diff --git a/help/xaos.hlp b/help/xaos.hlp new file mode 100644 index 0000000..9953af3 --- /dev/null +++ b/help/xaos.hlp @@ -0,0 +1,3996 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%main +<head>XaoS</head> +<center> +Welcome to XaoS - a real-time fractal zoomer. +</center> + +<dl> +<dt><a about>About XaoS</a> +<dd>Learn who's behind XaoS and how you can help. + +<dt><a start>Getting started</a> +<dd>Start here to learn how to use XaoS's basic features. + +<dt><a support>Getting support</a> +<dd>How to report problems and get help from the XaoS community. + +<dt><a sffe>User formulas</a> +<dd>Learn how to render your own formulas in XaoS. + +<dt><a video>Encoding videos</a> +<dd>Learn how to create videos from your XaoS animations. + +<dt><a drivers>Platform-specific documentation</a> +<dd>XaoS runs on many platforms. Read instructions specific to yours. + +<dt><a format>XaoS's file format</a> +<dd>Learn how to tweak your saved fractals and animations. + +<dt><a menus>Menus, commands and parameter index</a> +<dd>An in-depth discussion of all of XaoS's commands. +</dl> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%about +<head>About XaoS</head> +<notex> +XaoS is free software. You are welcome to redistribute it under the terms of +the <a gpl>GNU General Public License</a>. This also means that you may get +<emph>sources</emph> and help improve XaoS through an open +<a devel>development process</a>. +</notex> +<head>Credits</head> +(alphabetically) +<dl> +<dt>Lucio Henrique de Araujo (lucio.matema@gmail.com) +<dd>Brazilian/Portuguese translation +<dt>Eric Courteau (ecourteau@cplus.fr) +<dd>francais.cat (translation of tutorials) +<dt>Jean-Pierre Demailly (Jean-Pierre.Demailly@ujf-grenoble.fr) +<dd>Updates for French translation +<dt>Radek Doulik (rodo@atrey.karlin.mff.cuni.cz) +<dd>TK interface, windowid patches +<dt>Martin Dozsa (madsoft@centrum.cz) +<dd>cs.po (Czech translation of menus) +<dt>Arpad Fekete (Fekete.Arpad.2@stud.u-szeged.hu) +<dd>some new fractals, and the 'More formulae' menu +<dt>Zelia Maria Horta Garcia (zeliagarcia@seed.pr.gov.br) +<dd>Brazilian/Portuguese translation +<dt>Tim Goodwin (tgoodwin@cygnus.co.uk) +<dd>english.cat corrections +<dt>Ben Hines +<dd>autoconf suggestions, Mac OS X port +<dt>Jan Hubicka (jh@ucw.cz) +<dd>Zooming routines, ugly interface, palettes, drivers, autopilot, filters, documentation, tutorials etc. +<dt>Jens Kilian (jjk@acm.org) +<dd>BeOS driver, deutsch.cat +<dt>Thomas A. K. Kjaer (takjaer@imv.aau.dk) +<dd>OS/2 ports (320x200 graphics and AA-lib) +<dt>Zoltan Kovacs (kovzol@math.u-szeged.hu) +<dd>Internationalization, Hungarian translations, finalizing version 3.1, bug fixes, web design, current maintainer +<dt>Zsigmond Kovacs (kovzsi@gmail.com) +<dd>Fractal examples +<dt>J.B. Langston III (jb-langston@austin.rr.com) +<dd>Native Mac OS X port (from version 3.2.2); web redesign; co-maintainer +<dt>Andreas Madritsch (amadritsch@datacomm.ch) +<dd>New fractal types, bailout, many fixes +<dt>Mateusz Malczak (xaos@malczak.info) +<dd>User formula evaluation library +<dt>Giorgio Marazzi (gmarazzi@vtr.net) +<dd>Improvements and fixes for espanhol.cat +<dt>Thomas Marsh (thomas.marsh2@gmail.com) +<dd>First zoomer, formulae, planes, X11 driver, inversions, many ideas +<dt>Dominic Mazzoni (dmazzoni@cs.cmu.edu) +<dd>Macintosh port (version 2.0) +<dt>David Meleedy +<dd>Grammatical and spelling fixed version of <tt>xaos.6</tt> +<dt>Paul Nasca (zynaddsubfx@yahoo.com) +<dd>Ministatus improvement +<dt>Nix (nix@esperi.demon.co.uk) +<dd>Grammatical and spelling fixed version of <tt>xaos.hlp</tt> and other files +<dt>Terje Pedersen (terjepe@login.eunet.no) +<dd>Amiga port +<dt>Cesar Perez (oroz@users.sourceforge.net) +<dd>Spanish translations +<dt>Fabrice Premel (premelfa@etu.utc.fr) +<dd>Periodicity checking +<dt>Jan Olderdissen (jan@olderdissen.com) +<dd>Win32 port +<dt>Ilinca Sitaru (ilinca.sitaru@gmail.com) +<dd>Romanian translation +<dt>Daniel Skarda +<dd>Fractal examples +<dt>Andrew Stone (Stone Design - www.stone.com) +<dd>Videator Support, Cocoa improvements, performance mode, bug fixes +<dt>Marton Torok (marton.torok@gmail.com) +<dd>Small fixes for pipes +<dt>Pavel Tzekov (paveltz@csoft.bg) +<dd>Win32 support +<dt>Charles Vidal +<dd>Tcl/Tk interface +<dt>Tapio K. Vocaldo (taps@rmx.com) +<dd>Macintosh port +<dt>Tormod Volden +<dd>Fixes for X11 driver to improve compatability with Xorg, XScreenSaver, Beryl and Compiz +<dt>Philippe Wautelet (p.wautelet@fractalzone.be) +<dd>Bug fixes for version 3.1.1, French translation, gcc 4.0 fixes +<dt>Sergio Zanchetta +<dd>Italian translation +</dl> +<head>Included Software</head> +XaoS uses the following libraries. These libraries may be included +with some binary distributions of XaoS. +<p> +<emph>gettext 0.17</emph><br> +Website: <tt>http://www.gnu.org/software/gettext/</tt><br> +Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc.<br> +License GPLv3+: GNU GPL version 3 or later (http://gnu.org/licenses/gpl.html)<br> +This is free software: you are free to change and redistribute it.<br> +There is NO WARRANTY, to the extent permitted by law. +<p> +<emph>GNU Scientific Library 1.11</emph><br> +Website: <tt>http://www.gnu.org/software/gsl/</tt><br> +Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 The GSL Team.<br> +License GPLv3+: GNU GPL version 3 or later (http://gnu.org/licenses/gpl.html)<br> +This is free software: you are free to change and redistribute it.<br> +There is NO WARRANTY, to the extent permitted by law. +<p> +<emph>libpng 1.2.25</emph><br> +Website: <tt>http://www.libpng.org/pub/png/libpng.html</tt><br> +Copyright (c) 1998-2008 Glenn Randers-Pehrson<br> +Copyright (c) 1996-1997 Andreas Dilger<br> +Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%start +<head>Getting Started</head> + +<a controls>Basic controls</a><br> +Learn the basic commands to control XaoS. + +<p> +<tutor fractal.xaf>An introduction to fractals</tutor><br> +Try this animated tutorial if you don't know what a fractal is. If +you are new to XaoS you should try it too, since it is quite a good example +of XaoS's features. + +<p> +<tutor features.xaf>XaoS features overview</tutor><br> +Watch this tutorial to discover more of XaoS's features. + +<p> +Both the tutorials are divided into chapters and available from help menu, +so you don't need to watch them all at once (they are about half an hour long). + +<p> +<a tutorial>XaoS Overview</a><br> +A written introduction to all of XaoS's features. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%support +<head>Support</head> +XaoS is a community-supported free software project. + +<head>Home Page</head> +Site: <tt>http://xaos.sourceforge.net</tt><p> + +Check the Xaos home page for the latest news and information about +XaoS and to download the latest versions. + +<head>Users' Discussion Group</head> +Site: <tt>http://groups.google.com/group/xaos-users</tt><p> + +The xaos-users discussion group on Google Groups provides a place for XaoS +users to help each other get the most out of XaoS. XaoS developers also +monitor this discussion and answer questions from time to time.<p> + +You can browse the archives freely but you must join the group in order to +post. However, Google Groups provides a range of options for participation +from a traditional mailing list to a completely web-based forum, so you +don't have to get emails if you don't want to.<p> + +If you have a question or problem, please feel free to ask for help. We +also encourage you to share examples (.xaf or .xpf files), hints and +tips. If you have a gallery of images created using XaoS, feel free to +post a link to the group. + + +<head>Developers' Discussion Group</head> + +Site: <tt>http://groups.google.com/group/xaos-devel</tt><p> + +The xaos-devel discussion group on Google Groups is where XaoS developers +discuss and coordinate the further development of XaoS. XaoS users are +welcome to monitor this forum as well, but general discussion and requests +for help should be posted to the Users' Discussion Group instead. + + +<head>Issue Tracker</head> + +Site: <tt>http://code.google.com/p/gnuxaos/issues/list</tt><p> + +Issues are tracked on Google Code. If you think you have found a bug in +XaoS or have an idea for a great new feature, please let us know about it. +However, if you're not sure how to submit a useful issue report, please ask +on the xaos-users discussion group first (see above).<p> + +Please don't submit duplicate issues. Search the existing ones first to make +sure nobody has already reported it. You can add additional information about +a bug by entering a comment on an existing bug. You can also express your +interest in an issue by using the "Star" function on Google Code. This lets +the developers know how many users are interested in an issue and also allows +you receive status updates.<p> + +The developers will do their best to respond to issues in a timely manner. +However, keep in mind that XaoS is developed on a volunteer basis and the +developers work on it in their spare time. Therefore, we can't guarantee that +issues will be addressed in a certain timeframe.<p> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%devel +<head>Development</head> +XaoS is free software. One of the most significant rights its <a gpl>license</a> +grants to you is the right to <emph>freely get, study and improve</emph> its +source code, which is available from the XaoS homepage. +<p> +XaoS has an open development model. All development is coordinated via Google Code +at <tt>http://gnuxaos.googlecode.com/</tt>. Development versions are +available via Subversion at <tt>https://sourceforge.net/scm/?type=svn&group_id=5771</tt>, +so if you are interested in the future of XaoS, give the latest source a try! We also +have a several <a support>discussion groups</a>, which you can join if you want to +discuss XaoS with others or participate in the development process. +<p> +If you want to do some development, you are encouraged to send your work back +to the <a about>authors</a>; if it is well done, it will be added to the +next release. All changes should be submitted to the Google Code issue tracker. +<p> +XaoS is quite easily extensible. You might want to +read a bit about its internals in the file <emph>doc/xaosdev.info</emph>. +XaoS is also portable, so if it doesn't work on your favorite platform (or +there is just an old version available), you could quite easily port it. +<p> +<head>Volunteer Opportunities</head> +XaoS needs volunteers to make it the best fractal program it can be! +You don't have to be a programmer to help. The following +tasks open to volunteers: + +<p>Improving the documentation via the Wiki (and improving the DokuWiki converter). +<p>Compiling binaries for your favorite operating system. +<p>Reviewing the source code, adding comments, and checking lines which generate warnings during compilation. +<p>Creating additional tutorials and examples. +<p>Translating XaoS into your language. +<p>Implementing feature requests. +<p>Fixing outstanding bugs. +<p>If you would like to volunteer, join the discussion groups and let us know. We would be happy to help you get started! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%sffe usrform usrformInit +<head>Using user formulas</head> +<p> +XaoS supports entering your own custom formulas. +Select <tt>User formula</tt> from the <tt>Fractal</tt> menu to define a +custom fractal formula. Select <tt>User initialization</tt> to change +the sequence starting point <emph>z0</emph>. By default <emph>z0</emph> +is set to 0. User formulas should be interpreted as functions in the form<br> +<emph>Z(n+1) = formula (Z(n), Z(n-1), C)</emph>. +<p> +In user formulas, as shown above, three variables are available:<br> +<dl> +<dt>z +<dd>current sequance point Z(n) +<dt>c +<dd>current plane 'point' +<dt>p +<dd>previous sequence point Z(n-1) +</dl> +<p> +Format for complex numbers is <emph>{re;im}</emph><br> +eg. {3;2} is complex number 3+2i. +<p> +Available functions are listed below: +<dl> +<p> +<dt>basic operations +<dd>+, -, *, / +<p> +<dt>basic trigonometry +<dd>sin, cos, tan, cot<br> +asin, acos, atan, acot<br> +sinh, cosh, tanh, coth +<p> +<dt>Exponential and logarithmic functions +<dd>exp<br> +log - natural logarithm<br> +log2, log10<br> +logN (base, z) - logarithm of base N (where N is integer)<br> +logCN (base, z) - logarithm of base CN (where CN is complex) +<p> +<dt>power functions +<dd>powi - power with integer exponent (fastest)<br> +powd - power with real exponent<br> +powdc - power with complex exponent<br> +pow - same as powd<br> +sqr - square +<p> +<dt>square functions +<dd>sqrt - square root of a complex number<br> +rtni (z, n, i) - i-th root of n-th orgder +<p> +<dt>other functions +<dd>rand (max) - random real number in range [0, max)<br> +inv - inverse<br> +abs - absolute value<br> +re - real part<br> +im - imaginary part +</dl> +<p> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%video + +<head>How to encode video files from XaoS</head> +<p> +To create a video, make and <tt>xaf</tt> file first (the easiest way to do this is +to use the <emph>record</emph> function in the file menu). Then you need to render +the animation. XaoS can output sequences of ordinary <tt>PNG</tt> images, that +can later be used by a video encoder. +<p> +<head>Generating image sequences for video</head> +<p> +To generate an image sequence, choose <emph>Render Animation</emph> from the <emph>Misc</emph> +menu. You can also use the following command on the command line: +<p><tt> +xaos -render [filename] -size 352x240 -antialiasing + -renderframerate 24 -basename [basename] +</tt><p> +<emph>File to render</emph> (<tt>[filename]</tt>) is the name of the <tt>xaf</tt> file, +<emph>Basename</emph> (<tt>[basename]</tt>) is the name used as the base filename for rendered images. This should also include the path where you want to save the images. +XaoS adds a four digit sequence number and <tt>.png</tt> extension to this name automatically. +<p> +You might also want to change the resolution. Make sure that the resolution +you choose is supported by the video codec you wish to use. +<p> +The framerate can also be altered. Make sure you choose a framerate that is supported by +the video codec you wish to use. +<p> +<emph>Antialiasing</emph> (<tt>-antialiasing</tt>) is used to produce anti-aliased images. +It takes a much longer +time and much more memory to calculate them, but resulting images are better +for video compression and they result in a much smaller video file. +(the same is true of <emph>JPEG images</emph>) +<p> +On the other hand, the other XaoS rendering option <emph>Always Recalculate</emph> (<tt>-alwaysrecalc</tt>) (which disables +XaoS's zooming optimizations) is <emph>not recommended</emph>. If that's used, the +sequence of animation then contains quite a lot of extra information, which +increases size of video file, but because of the codec's lossy compression it is hard +to see any difference, so it's not worth it. +<head>Rendered files</head> +Once you start it, XaoS will generate thousands of frames. They take quite +a long time to calculate and save, and consume plenty of disk space. +(e.g. to render part 1 of the tutorial you need about 60MB and half an hour of time). +<p> +All images are named <tt>[basename]framenum.png</tt>. For example <tt>intro0001.png</tt> is +the first frame of the animation intro. If consecutive frames are the same, XaoS +doesn't save them, so some frames may be missing. If your encoder can't handle +that, you will need to write a simple script which will fill in the gaps by means +of <tt>mv</tt> or symbolic linking. +<p> +A list of all filenames is saved into the file <tt>[basename].par</tt>, where each line is +the name of one frame. The names repeat here if necessary, so you can use this +file to supply filenames to the encoder. +<head>Encoding videos</head> +Once XaoS has generated the png files for each frame of the animation, you +can use a third-party video encoder to convert the sequence of images into +a video file. We currently recommend the following encoders, which support +a wide variety of video codecs and file formats: +<dl> +<dt>ffmpeg +<dd>Available from: <tt>http://ffmpeg.mplayerhq.hu/</tt><br> +Instructions: <tt>http://ffmpeg.mplayerhq.hu/faq.html#SEC12</tt> +<dt>mencoder +<dd>Part of mplayer, available from: http://www.mplayerhq.hu/<br> +Instructions: <tt>http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-images.html</tt> +</dl> +These are both command line tools. If you prefer a graphical tool, you may +prefer Quicktime Pro from Apple (http://www.apple.com/quicktime/pro/). However, +this software costs approximately US$30, and the authors of XaoS have no +experience with it. Although QuickTime may be easier to use, the two free +encoders above are just as capable once you learn how to use them. + +<p> +Note: we used to recommend <a berkeley>Berkeley parallel MPEG encoder</a> to +encode the generated png files into MPEG videos. We have kept +the instructions mainly for historic purposes. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%berkeley +<head>Berkeley parallel MPEG encoder</head> + +This is the encoder we used to recommend. However, it has not been updated +for a very long time and no longer appears to compile on modern systems. +Also, there are much more modern codecs available that provide better video +quality and compression rates. Still, we have kept the following +instructions mainly for historic purposes. +<p> +It is available at Berkeley's FTP site <tt>mm-ftp.CS.Berkeley.EDU</tt> and called +<tt>mpeg_encode1.5b</tt> +<p> +It has lots of options to tune, so you should spend quite a lot of time +playing with this. The configuration I use is in file <tt>doc/mpeg.param</tt>. +<p> +I've also made some patches that makes possible to use the pattern and motion +files generated from XaoS. The patch is in <tt>doc/mpeg_encode.patch</tt>. So if +you want to use these features (they are <emph>EXPERIMENTAL</emph>) you might apply this +patch and recompile the encoder. +<p> +Once you filled the <tt>mpeg.param</tt> file (see comments inside), you should render +sequence using <tt>mpeg_encode [filename]</tt> and with luck you are done. + +<head>Pattern file</head> + +Some other files are generated as well. A <emph>pattern file</emph> is generated, +which contains a <emph>recommended order of P, B and I frames</emph>. +<p> +MPEG sequence consist of these three frames. The <emph>I frames</emph> are just images +saved in a format similar to JPEG files. +<p> +The <emph>P frames</emph> are images which are constructed as a delta from the +previous one (the latest I or P frame). In case consecutive frames are similar +(and in animations they often are), a P frame takes much less disk space +than an I frame. +<p> +The <emph>B frames</emph> are constructed from the nearest previous P or I frame +and the next P or I frame. They take even less disk space, but they are quite +hard to encode. Also they are <emph>not used as previous frames</emph>, +so their information is lost once they are displayed. They are usually +rendered at lower quality than a P or I frame and used just to interpolate +nearest frame and make animation smoother. It is generally not a good idea +to make a whole sequence just from B frames. +<p> +Using just P frames is generally not a good idea. It makes the file shorter, +but to jump into Nth frame of animation you need to <emph>recalculate all P and B frames +since latest I frame</emph>. Decoders often want to jump to some frame (when +the user asks, or when they can't decode a sequence in time and must skip +some), so you need to have some I frames in the animation to make this possible. +The latter reason means that you need to place them quite often. Usually +they are used for every 15th frame or thereabouts. Because they cost quite a lot, +in my animations I usually use every 27th frame. To set this distance +use <tt>-iframedist</tt> option. It should be a multiple of 3. +<p> +XaoS generates a recommended order of frames based on its knowledge of +fractal motion. Situations where the screen doesn't move at all are rendered +just from P frames (since jumping is usually not required here); in situations +where the screen changes completely (at least in XaoS's opinion) I frames are used +and in other cases, a standard sequence <tt>IBBPBBPBBPBBP...</tt> is used. +<p> +If your encoder supports this, you should supply this pattern for encoding to +squeeze out some bytes. + +<head>Motion vector files</head> + +XaoS also generates a motion vector recommendation for the encoder. This is +useful for encoding of B and P frames. +<p> +If some objects on the screen are moving at a constant speed, motion vectors +can store that speed, so no image needs to be saved to represent that change. +<p> +Calculating this motion vector is a very significant task. If you guess +them well, you increase quality and reduce file size, which is always great. +Calculation also takes lots of CPU and it is hard to get optimal vectors (it +just takes too long). +<p> +XaoS knows how the fractals move, so it can calculate this vectors quite +easily. XaoS saves this information into <tt>*.p</tt> and <tt>*.b</tt> files. (<tt>*.p</tt> are for P +frames, <tt>*.b</tt> are for B frames). If your encoder supports this, you should +provide this vector to increase quality. They are <tt>not exact</tt> (XaoS can make +mistakes); the encoder should try to find its own vectors, then try XaoS's ones, +and pick whichever is better. +<p> +This technique saves quite a lot of bytes in fast zooming/un-zooming +animations (where images move more than 3 or 5 pixels per frame--since +most programs look 10-20 pixels around each point for motion vectors). +<p> +To enable saving of motion vector files, add the option +<tt>-rendervectors</tt>. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%controls +<head>Basic controls</head> +By default the mouse buttons work in the following way: +<p> +<dl> +<dt>left<dd>zoom in +<dt>right<dd>zoom out +<dt>middle<dd>move fractal in a drag-and-drop fashion +</dl> +<p> +<emph>Note:</emph> Since most Macs only have one button mice, these controls +are emulated on Mac OS X using modifier keys. See the help section on +<a cocoa>Mac OS X</a> for details. +<p> +This behavior can change. If you enable rotation, the first button is used for rotating +fractals. Also, in fast Julia mode, the first button is used to change the seed. +<p> +If you don't have a middle button, press both buttons to enable +emulation. +<p> +After few minutes of zooming you will probably exceed the precision and the +fractals will get boring. If you are getting strange big rectangles on the screen, +you probably reached the numeric limit: there is no way to avoid this except +un-zoom back and choose a different area. It doesn't hurt so much, since you have +zoomed approximately 64 051 194 700 380 384 times, so there are quite a lot of areas to +explore. Algorithms with unlimited precision exist, but they are still too +slow for real-time zooming. +<p> +The other possibility is that you have reached the iteration limit. The fractal is +calculated approximately, and in this case you need to increase number of +iterations used for approximation (and decrease the speed in the process). +This is done from the menu or using the arrow keys <emph>Left</emph> and <emph>Right</emph>. +<p> +An <emph>Up</emph> and <emph>Down</emph> keys should be used to change zooming +speed. Note that higher speed costs more and image will be blocky. +<p> +This behavior can also change. With palette cycling enabled, <emph>Left</emph> +and <emph>Right</emph> keys change cycling speed; in continuous +rotation they change rotation speed. +<p> +All other functions are available from the menu, which (in the default +configuration) are displayed when you move the mouse to the top of the +screen/window. It is useful to learn the shortcut keys, which are +shown in gray next to the menu items they trigger. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%writehelp +<head>How to write XaoS help files</head> +XaoS help is stored in the file <tt>help/xaos.hlp</tt>. It is divided into parts, +each part being started by a <emph>keyword</emph>. In the help file keywords are +written as <tt>%keyword</tt> +<p> +If you are writing documentation about some command in the XaoS function +registry, use the same keyword as the name of the command in order to make +context sensitive help work. +<p> +<notex> +The help file is written in a special format called <a xshl>xshl</a>. +</notex> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%xshl +<head>xshl</head> +<emph>Xshl</emph> stands for <emph>XaoS simple hypertext language</emph>. It +uses similar tags to HTML. It is simpler and more restrictive in order to +make it easy to parse using various scripts. In C code you can use the +library present in <tt>src/util/xshl.c</tt> to parse it. +<p> +The following tags are supported: +<p> +<dl> +<dt>head +<dd>make headings (should be at the beginning of the page, at least) +<dt>emph +<dd>emphasize +<dt>tt +<dd>Use non proportional font +<dt>br +<dd>Break line +<dt>p +<dd>Next paragraph +<dt>dl +<dd>Definition list +<dt>dt +<dd>Definition tag (should be used only inside a definition list) +<dt>dd +<dd>Definition description (should be used only inside a definition list) +<dt>center +<dd>align to center +<dt>right +<dd>align to right +<dt>red +<dd>change color to red (should not be used in help files) +<dt>black +<dd>change color to black (should not be used in help files) +<dt>white +<dd>change color to white (should not be used in help files) +<dt>a name +<dd>link to other help page +<dt>tutor name +<dd>activate tutorial +<dt>notex +<dd>Ignore this in texinfo manuals +</dl> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%format +<head>XaoS's file format</head> +This section describes the format used by XaoS for animations, configuration +files and saved positions. All these files have a common format, designed +to be easily readable, to allow manual editing of files and easy conversion by +other programs. +<p> +I also taken care to make it easily extensible for future versions of XaoS +so I hope there will not be many incompatibilities between various XaoS +versions. +<p> +The format is a simple set of commands executed sequentially. XaoS does not provide +any variables/cycles as usual scripting languages do, but future extension to +full-blown Scheme should be easy since the format uses Scheme-like syntax. +The syntax of every command is: +<p> +<tt>(command_name </tt><emph>[param1] [param2]</emph><tt>)</tt> +<p> +where parameters are optional and separated by whitespace (an arbitrary number +of spaces, tabs and newlines). The parameters can have the following types: +<p> +<dl> +<dt>integer +<dd>number w/o decimal point (<tt>123</tt>) +<dt>float +<dd>floating point number in decimal notation with optional exponent (<tt>1.23E2</tt>) +<dt>keyword +<dd>text started by quote <tt>'</tt>. It is used to pass various string constants +like formula name (<tt>'mandel</tt>) Quote is required for scheme compatibility +<dt>string +<dd>Text inside double quotes. The only parameter that should contain whitespace +<dt>boolean +<dd><tt>#t</tt> for true or <tt>#f</tt> for false +</dl> +<p> +There is a complete description of all XaoS functions (with some examples) and an +index of functions in the <a menus>XaoS registry</a>. You may particularly want +to read about the <a animf>animation functions</a>. Also, the following functions +are significant: + +<dl> +<dt>load +<dd> +This function loads and interprets a file. It works similarly to <tt>#include</tt> +in C. +<dt>initstate +<dd> +Available in version 3.0 and above, this function resets XaoS's state to default +values. This command should be at the beginning of each animation file, +since otherwise some stuff previously enabled by user could cause unexpected +effects. State is not reset by default before playing animations since it would +make it impossible to write macros. Current versions don't really need macros, but +in future versions, when the Scheme programming language will be available, this +should be a much more interesting subject. +<dt>usleep +<dd> +This function waits for a selected amount of time(in usec) before processing the +next command. The screen is recalculated and displayed at the beginning of +the sleep if necessary. The remaining time is spent by waiting, calculating if +necessary, or performing any animation you entered via animation commands. +<dt>wait +<dd> +Waits until the animation or image rendering is complete. Do not call this +function when zoom, or continuous rotation is active otherwise deadlock happens. It is +a good idea to call it immediately before text subtitles are displayed, since it looks +ugly when they are displayed over a blocky unfinished fractal. Because the +degree of blockiness at a given instant is a function of your machine speed, +it may look nice for you but ugly for others with slower machines. Also +you should call this after an animation is performed, before the switch to another +fractal happens; since the switch involves calculation, the screen is stopped +for a while and an unfinished fractal there looks ugly. +You should also call it, when you want to do something as soon as possible. +</dl> +<p> +Example: +<p><tt> +;configure everything for the first frame<br> +(inistate)<br> +(palette 1 1163254293 0) ;custom palette<br> +(cycling #t) ;enable cycling<br> +(cyclingspeed 7)<br> +(maxiter 276) ;higher number of iterations<br> +(range 3) ;default range for solid guessing<br> +(usleep 1000000) ;second frame starts here<br> +(moveview -1.8101154154614007889 -8.2687205907162041209E-05)<br> + ;just move the image<br> +(usleep 1000000) ;third frame<br> +(morphview -1.8101154154614007889 -8.2687205907162041209E-05<br> + 6.277210971069452361E-10 6.2772109785334669875E-10)<br> + ;10 seconds of zooming into selected<br> + rectangle<br> +(usleep 100000000)<br> +</tt><p> +The best way to learn XaoS command language is probably to read position files +and modify them. For example, to create zooming animation from the original +file: +<p><tt> +(initstate)<br> +(defaultpalette 0)<br> +(formula 'mandel)<br> +(view -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br> +9.69332308834E-08)<br> +</tt><p> +Just change the <tt>view</tt> command to <tt>morphview</tt>, and add <tt>usleep</tt>: + +<p><tt> +(initstate)<br> +(defaultpalette 0)<br> +(formula 'mandel)<br> +(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br> +9.69332308834E-08)<br> +(usleep 10000000)<br> +</tt><p> +The following code produces Julia morphing in the real axis: +<p><tt> +(initstate)<br> +(fastjulia #t)<br> +(juliaseed -2 0)<br> +(morphjulia 2 0)<br> +(usleep 2000000)<br> +</tt><p> + +And following is the ``rotozooming'' animation: + +<p><tt> +(initstate)<br> +(fastrotate #t)<br> +(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br> +9.69332308834E-08)<br> +(morphangle 300)<br> +(usleep 10000000)<br> +(wait)<br> +(fastrotate #f)<br> +</tt><p> + +<head>XaoS gallery</head> + +I plan to make a gallery of animations and position files on the XaoS home-page, +so please send any nice animations and images you created using XaoS +to the <a support>mailing list</a> or upload them to our website. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%drivers + +<head>Platform-specific documentation</head> +XaoS is portable and works on many different platforms. Since not all platforms are +exactly the same, there are some differences between the behavior of XaoS on +different platforms. Here is documentation about each specific port. +<notex> +<center> +<p> +<a X11>X11 driver</a> +<p> +<a cocoa>Mac OS X driver</a> +<p> +<a win32>Win32 driver</a> +<p> +<a dX-window>DirectX windowed driver</a> +<p> +<a dX-fullscreen>DirectX fullscreen driver</a> +<p> +<a aa>AA-lib driver</a> +<p> +<a dos>MS-DOS driver</a> +<p> +<a ggi>GGI driver</a> +<p> +<a plan9>plan9 driver</a> +<p> +<a SVGAlib>SVGAlib driver</a> +<p> +<a DGA>DGA driver</a> +<p> +<a BeOS>BeOS drivers (BeOS, DirectWindow, WindowScreen) </a> +</center> +</notex> + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%cocoa + +<head>Mac OS X port</head> +XaoS has full support for Mac OS X including native menus, dialogs, help, +Finder integration, drag and drop, and basic AppleScript support. +<p> +The Mac OS X port of XaoS strives to provide a Mac-like experience, while +retaining compatibility with other platforms. Some Mac-specific details +are outlined below. + +<head>Zooming</head> +Since most Macs have one button mice, the middle and right buttons are emulated +with modifier keys. This means there are multiple ways to perform basic zooming +operations: + +<dl> +<dt>Zoom in +<dd>Hold down the main mouse button. +<dt>Zoom out +<dd>1. Hold down the Ctrl key while pressing the main mouse button.<br> + 2. Use the right mouse button if you have one.<br> + 3. On laptops with gestures enabled, place two fingers on your trackpad and press the main mouse button. +<dt>Pan +<dd>1. Hold down the Shift key while dragging with the main mouse button.<br> + 2. Drag with the center button if you have one.<br> + 3. Use the scroll wheel or ball if you have one to pan up/down and left/right.<br> + 4. On laptops with gestures enabled, swipe two fingers across the trackpad to pan horizontally or vertically. +</dl> + +<head>Keyboard Shortcuts</head> +XaoS menu functions have been mapped to commonly used Mac keyboard shortcuts. For example, +Open is Cmd-O and Undo is Cmd-Z, just as you would expect. + +<p>However, XaoS also has its own +long-standing tradition of cross-platform keyboard shortcuts. These keyboard shortcuts are +also displayed in the menus inside parentheses. For example, the menu item "Autopilot (a)" +means that you can press a (with no modifier keys) to activate Autopilot. All of these +traditional XaoS shortcuts do not use modifier keys, so they do not conflict with any standard +Mac OS X shortcuts. + +<p>In some cases, the same function may be performed with both a traditional +XaoS shortcut and a Mac OS X-specific shortcut. You can choose whichever one is more +comfortable for you. + +<head>Full Screen Mode</head> +The Mac OS X port supports a full screen mode. To enter it, select <emph>Mac OS X Full Screen Driver</emph> +from the <emph>UI -> Driver</emph> submenu. Once you enter full screen mode, the menu bar will +automatically hide. To access the menu bar, move your mouse to the top of the screen and the menu +bar will slide into view. When you move your mouse away, it will automatically disappear again. +To return to windowed mode, select <emph>Mac OS X Windowed Driver</emph> +from the <emph>UI -> Driver</emph> submenu. + +<head>Videator Support</head> +XaoS for Mac OS X can send a live video stream to Stone Design's Videator (<tt>http://stone.com/Videator/</tt>), +which can then do post-processing using Mac OS X's core video technology. This combination creates mind-blowing visuals +that are great for VJing (live video performance art). +<p>To turn on output to Videator, select <emph>Videator Output</emph> from the <emph>UI</emph> menu. +See <tt>http://stone.com/Videator/VJ.html</tt> for more details on how using Videator with XaoS. + +<head>Known Issues</head> +<dl> +<dt>Catseye fractal does not render properly. +<dd>Workaround: Set the bailout to just over 4 (e.g., 4.000000001). After changing this setting, the fractal renders as expected. +</dl> +<p> +The Mac OS X driver was written by J.B. Langston, 2006-2008. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%aa + +<head>AA-lib driver</head> + +The AA driver is currently the most advanced and portable driver for XaoS. +It is based on AAlib--a high quality ASCII-art library developed by the AA-project. +(see <tt>http://aa-project.sf.net</tt>) +<p> +It is a fully featured XaoS driver for text mode displays. It supports 256 colors +and the mouse where possible. +<p> +It also has some extended features available from the UI menu: +<p> +<dl> +<dt>Attributes +<dd>AA-lib may use character attributes to improve image quality. + By default it uses normal, dim and bold characters where possible, + but you can also enable different attributes like reversed or bold font + characters. You may also enable usage of non ansii/reversed characters if + your device supports it. +<dt>Font +<dd>AA-lib uses a bitmap image of the font to prepare the approximation table +used for ASCII art rendering. This bitmap is expected to be same as the one used +by your device. AAlib performs detection where possible however some devices +(like UNIX text terminals or MDA) do not support this. AAlib has few font +images compiled in, so in this case you should try to use one of them to +achieve best results. +<dt>Inversion +<dd>Some devices use inverse video: use this to get correct results on such devices. +<dt>Dithering mode +<dd>Dithering is an way to get more exact color in approximations, by combining + more characters; but this method can produce ugly looking noise on certain images. + Use this menu to disable or tune it. +<dt>Palette options +<dd>By default AA driver uses the XaoS palette to render images, but it quite often +looks ugly on text displays. Here you can choose a special text palette instead. Note that with +filters enabled, the results may be rather ugly. This function is available from +the <emph>palette menu</emph>. +<dt>Save text screen +<dd>The normal save function will generate a PNG image instead of nice + ASCII-art. To save ASCII art use this function instead. It supports many + text file formats like HTML, ANSI, more, etc... It will also ask you for +font and attributes(see above). It is available from the <emph>file +menu</emph>. +</dl> +<p> +The AA-lib driver also provides the full set of standard AA-lib's command line +options. You may use them to tune parameters like gamma correction, and so on. +See <tt>xaos -help</tt> or the AA-lib documentation for details. +<p> +The AA driver was written by Jan Hubicka, 1997. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%dos + +<head>DOS driver</head> +This is a fully featured driver for DJGPP and allegro. +It supports many VGA modes, VESA 1.0--3.0, VBE/AF, S3 and some other cards. +<p> +The following problems may occur: +<p> +<dl> +<dt>Some DPMI servers may cause problems +<dd>Some DPMI servers like the one from Novell/Dr/Open DOS are buggy. Use clean DOS + instead and XaoS will automatically start <tt>cwsdpmi</tt>. + Under Open Dr DOS use <tt>dpmi off</tt> at command line to disable it. +<dt>Higher resolutions don't work + <dd>If your videocard has enough memory for the selected resolution, + you most probably have an unsupported videocard. + Please use a VESA BIOS extension on this videocard. (See the note about VESA + at the end of this section.) +<dt>XaoS needs a coprocessor + <dd>I don't distribute a coprocessor library linked into XaoS because it is too slow for + a real-time zoomer. Coprocessor emulation will not help, because xaos works in protected mode. +<dt>XaoS needs mouse driver to be usable +<dt>XaoS works slowly in higher resolution + <dd>This could also be caused by Allegro's slow driver or your videocard's VESA BIOS. + You could try some other VESA BIOS extension instead. + Look at the <tt>http://www.talula.demon.co.uk</tt> for the FreeBE + project or Scitech Display Doctor package. + (See the note about VESA at the end of this section.) +</dl> +<head>VESA</head> +VESA is a standard for using higher resolutions in DOS. Many videocards have +VESA support in the BIOS so you don't need any additional software, while others +need support from a special program. Also some VESA BIOS implementations are +buggy or suboptimal; there are 3 different versions, version 1.0 is many times +slower than 2.0, which has support for protected mode and linear framebuffers. +So if you have problems with higher resolutions, or some graphics modes are +not available (like 320x200 truecolor), you might try some software package +which emulates VESA. +<p> +The most famous VESA emulating program is Scitech Display Doctor. It has support +for many videocards and is quite reliable. It's disadvantage is that it is +shareware and works for only 30 days. You might also look on +<tt>ftp.simtel.net</tt>, where there are many VESA emulation packages such as +<tt>s3vbe</tt> or the new FreeBe project at +<tt>http://www.talula.demon.co.uk</tt> +<p> +DOS driver was written by Jan Hubicka, 1997. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ggi + +<head>GGI driver</head> + +GGI stands for General Graphics Interface. Part of this project is to develop +libggi, a portable graphics library, and XaoS's GGI driver uses that. +It is experimental, since the API of libggi is not stabilized yet. +There are some problems with keyboard handling--the shift key doesn't work +yet. +<p> +Everything else might work well, but there are no guarantees. It is alpha quality +software. +<p> +GGI driver was written by Jan Hubicka, 1998. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%plan9 + +<head>Plan9 driver</head> + +Plan9 is a very nice small operating system by the authors of Unix at Bell Labs. +It is very incompatible with other operating systems; even the C compiler and +header files are different, but XaoS should work well there (even on the +limited free demo installation without any POSIX compatibility stuff) +<p> +There are a few limitations: the file selector and image saving don't work. +You can save position files and then later render them on the other OS, or save +screenshots. +<p> +Plan9 terminals also don't provide any way to catch the arrow keys, so you +can't use them. Use the mouse to navigate in the menus. Also, getting the screen +resolution is impossible, so use <tt>-pixelwidth</tt> and <tt>-pixelheight</tt> +instead of <tt>-screenwidth</tt> and <tt>-screenheight</tt>. +<p> +By default XaoS changes the colormap. This will collide with other colorful +programs like Mortha. You can disable this behavior using +<tt>-nopalette</tt> switch, but this will slow down XaoS. +<p> +Plan9 driver was written by Jan Hubicka, 1997. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%SVGAlib + +<head>SVGAlib driver</head> + +This is a driver for Linux SVGAlib. I really like this driver, because +I much prefer full screen zooming instead of a small 320x320 window in X11. +It was one of the first drivers for XaoS and is fully featured. +The following problems can occur: +<p> +<dl> +<dt>XaoS doesn't initialize graphics mode +<dd>when started under users other than root SVGAlib requires root privileges + to directly access the hardware. When you really want to start XaoS as a + normal user, enable the suid bit (<tt>chmod +s</tt>) at XaoS executable. + note that I take care to disable all security holes caused by this + bit so I believe it is safe. +<dt>Mouse doesn't work +<dt>Screen is blank at higher resolutions +<dd>Both this problems are probably caused by misconfiguration of +SVGAlib. Please configure it in <tt>etc/vga/libvga.cong</tt> or +<tt>/usr/local/lib/libvga.conf</tt> +GPM can also cause problems. Try to kill it before starting XaoS. +<dt>When I switch console I can't switch back +<dd>This is another typical SVGAlib bug. Try to hold <tt>F</tt> key longer than <tt>alt</tt>. + It helps on my computer. On older SVGAlib there was a famous ``enter bug'' that caused + a crash after pressing enter. Try to update to a newer release. +</dl> +<p> +SVGAlib driver was written by Jan Hubicka, 1997. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%win32 + +<head>Win32 driver</head> + +This is a driver for Windows 9x and NT. It is new since version 3.1 and +because of some oddities of Windows API it may be rather unstable. +Please report all bugs. In case of problems you could use the DOS version +of XaoS instead. +<p> +The driver should work in all bit depths, but 16 color mode is not natively +supported by the XaoS engine. XaoS internally works in 32k colors and +the result is converted to 16 colors by Windows. Because Windows +conversion routines are slow and ugly, the result is slow and ugly. +Please configure your display to another bit depth to ``solve'' +this problem. +<p> +Use <tt>-size WIDTHxHEIGHT</tt> command line option to change the default +window size. +<p> +This driver also maps to native Windows look and feel. There is a small +problem with combo boxes in dialogs. They are expected to give you a choice +between a few strings. The keyboard controls (changing choice by arrow keys) +work, but mouse selection is broken. If you know how to solve this bug, +please let me know. +<p> +XaoS is a UNIX application and has many command line options. +Some features are not available from the GUI. +Because Windows applications can't have normal output, +most of the critical messages are displayed in message boxes, but +some longer messages are omitted. The most significant omission is the help +about command line options that you can find in <tt>doc/cmdopts.txt</tt>. +<p> +One thing that might be confusing is that animation rendering mode doesn't +display anything, but only renders images. Start the rendering, +and a message box will inform you that XaoS is entering the calculation +loop. Relax and wait for the message box signaling the end of the loop. +<p> +Note that XaoS also supports the <a dX-window>DirectX</a> API. +<p> +Win32 driver was written by Jan Hubicka, Jan Olderdissen and Pavel Tzekov, 1999. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%dX-window + +<head>DirectX windowed driver</head> + +This is a driver for Windows 9x and NT. It is new since version 3.1 and +because of some oddities of Windows API and kludges in DirectX +it may be rather unstable. Please report all bugs. In case +of problems you could use the DOS version of XaoS instead. +<p> +The DirectX driver is an alternative to the windowed <a win32>win32 driver</a>. +If you have DirectX installed, this driver is used by default. It has +almost the same behaviour as the <a win32>win32 driver</a> so please read its +documentation for more details. The only difference should be the display +speed. +<p> +The driver supports only hicolor and truecolor modes. There is no support +for 256 and 16 color modes because of palette collision problems. The win32 +driver will be used in these cases by default, so this should cause no +problems. +<p> +If you are experiencing problems with this driver, you might want to +use the <a win32>win32 driver</a> by default; to do this, use the <tt>-driver win32</tt> +command line option. +<p> +DirectX driver was written by Jan Hubicka, Jan Olderdissen +and Pavel Tzekov, 1999. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%dX-fullscreen + +<head>DirectX fullscreen driver</head> +This is da river for Windows 9x and NT. It is new since version 3.1 and +because of some oddities of Windows API and kludges in DirectX +it may be rather unstable. Please report all bugs. In case +of problems you could use the DOS version of XaoS instead. +<p> +This driver allows the Windows port of XaoS to run in full screen mode. +The driver supports 256, 65536 and 16777216 color modes (24bpp and 32bpp) +in all resolutions supported by DirectX. +You can change graphics mode by pressing the <tt>=</tt> key +(or by using the UI/Resize menu). If the selected mode is not supported, +the driver will restore the previous setting. +<p> +Use the <tt>-mode WIDTHxHEIGHTxDEPTH</tt> (like <tt>-mode 640x480x16</tt>) +command line option to change graphics mode. +<p> +If you want to start XaoS in DirectX, use the <tt>-driver dX-fullscreen</tt> +option. +<p> +See the <a win32>Win32 driver</a> documentation for some more Windows +releated information. +<p> +DirectX driver was written by Jan Hubicka, Jan Olderdissen +and Pavel Tzekov, 1999. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%BeOS DirectWindow WindowScreen + +<head>BeOS support</head> + +XaoS has pretty advanced support for BeOS R4. It works on both PowerPC and +Intel platforms, supports multithreading, the clipboard, file dragging, +has native look and feel and can work as an image translator from XaoS files +to images. +<p> +The first version of the BeOS driver was written by Jens Kilian and later +extended by Jan Hubicka. +<p> +<head>Installation</head> +<p> +You can start the installation script to do everything for you. If you want +something special, read this section. +<p> +In order for XaoS to work you need to keep the executable together with +its data files (<tt>help</tt>, <tt>examples</tt>, <tt>catalogs</tt> and the <tt>tutorials</tt> directory) +<p> +When first started, XaoS registers two new mime types called +<tt>image/x-xaos-position</tt> for XaoS Position Files and +<tt>video/x-xaos-animation</tt> for XaoS Animation Files, +registers icons for them and sets itself as default application. +<p> +<head>Available display drivers</head> +<p> +XaoS supports following drivers: +<p> +<dl> +<dt>BeOS +<dd>Standard windowed driver using application server +<dt>DirectWindow +<dd>Driver done using Game Kit's direct window class +<dt>WindowScreen +<dd>Fullscreen driver. +</dl> +<p> +By default, XaoS starts in windowed mode and uses the application server for output. +You could change the driver to DirectWindow to use direct access to video RAM. +Note that this mode is slower in most cases, and not supported by some videocards. +<p> +The BeOS driver by default chooses the most similar bitmap supported by XaoS +to achieve best and fastest results. +In the UI menu you can change this default choice to another one if you wish. +Also you can ask the BeOS and DirectWindow to resize to fullscreen mode. +<p> +XaoS also supports real fullscreen mode using the BWindowScreen API. To switch +XaoS to this driver, use the UI menu. If you want to use this mode by default, +use the <tt>-driver WindowScreen</tt> command line option. +<p> +This driver differs a lot from windowed ones. It use direct access to the video +card, allowing you to change video mode. Also, the 256 color mode +can access the palette, so it is not dithered like the windowed mode. +Because BeOS can't do GUI in fullscreen mode, XaoS uses its own toolkit. +I hope you will feel confortable in it. +<p> +<head>XaoS as translator</head> +<p> +You should be able to open XaoS files in graphics applications +such as ShowImage or ArtPaing. In Preferences you can find the DataTranslations +program, that can be used to set the size, type and DPI of the resulting image. +Also antialiasing can be enabled. +<p> +Note that <emph>translation can take a while</emph>. So be patient and +wait for the result. +<p> +If the translator doesn't work, ensure that you have a link to the XaoS executable +in <tt>/boot/beos/system/add-ons/Translators/</tt>. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%X11 + +<head>X11 driver</head> +This was the first driver done for XaoS. It supports many visuals, shared +colormaps and MitSHM extension. +<p> +Bugs/limitations: +<p> +<dl> +<dt>XaoS makes some X servers too busy +<dd>Sometimes XaoS generates images faster than X can display them. +In this case XaoS responds poorly to the mouse, and other applications slow +down too. This happens especially often on old R4 servers. Use <tt>-sync</tt> +to avoid this problem. Note that <tt>-sync</tt> does <tt>not</tt> make all +communication with X asynchronous; it just adds one additional XSync call. +So the slowdown is not as large as you might expect. +<dt>Does not work on all visuals +<dd>This driver supports only 8bpp pseudocolor/grayscales, 15,16,24 and 32bpp truecolor, 1bpp and 8bpp staticolor visuals. +<dt>Palette rotating does not work for 8bpp pseudocolor w/o private palette +</dl> +<p> +X11 driver was written by Jan Hubicka and Thomas Marsh, 1997. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%DGA + +<head>DGA driver</head> +This is the driver for DGA (Direct Graphics Architecture) extension used by +XFree86 X servers. It is pretty new so it could be buggy. +<p> +Bugs/limitations: +<p> +<dl> +<dt>In 8bpp mode, XaoS has problems with the palette with certain window managers +<dd>I don't know why this happens. Just let me know what's wrong, or use another +window manager. +<dt>Banked modes are not supported. +<dd>I don't have any card to test this with, so it doesn't work in the current version. +</dl> +<p> +DGA driver was written by Jan Hubicka, 1999. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%tutorial + +<head>XaoS tutorial</head> + +This is a brief introduction to the basic XaoS features. + +<head>How to zoom</head> + The main advantage of XaoS is that after a few seconds' delay to calculate + the first image, you may choose any point with the mouse and press the <emph>left</emph> button. + The image will start to zoom smoothly into the point you choose. You may move + the mouse and zoom smoothly into interesting areas. By pressing the <emph>middle + button</emph> (or <emph>left+right</emph> buttons) you may also + <emph>move the image</emph> using ``drag & drop'' if you missed an interesting + place. <emph>Unzooming</emph> is also possible by using the <emph>right button</emph>, + but it is much slower because optimizations are not so effective as for zooming. +<p> + In case you think that the default <emph>speed</emph> is boring (it is quite slow, to + make XaoS smooth on a slow computer) you may change it by pressing <emph>arrow + up/down</emph>. But faster zooming is more expensive, so if the speed is too high + you will see little but funny colorful blinking rectangles. + +<head>Autopilot</head> + + To make XaoS yet more impressive we made a special autopilot that + automatically drives into interesting boundaries of the set. So you can + press <tt>A</tt>, play your favorite music, drink coffee and relax. I never + tried this but it should be really relaxing! Many pictures in the XaoS + gallery were discovered using the autopilot. +<p> + The autopilot also has some additional features. It turns back when the + zoomed picture stops being interesting, and is able to spot when it's zoomed + into a really boring part (or has reached the limit of floating point + numbers) and restart zooming from the top. +<p> +<head>Various fractal formulae</head> + + XaoS also supports formulae other than the Mandelbrot set. You may change + <emph>formula</emph> using the <emph>number keys</emph> + or <emph>SHIFT+letters</emph>. + + +<p> + On keys <tt>1</tt> to <tt>5</tt> are <emph>Mandelbrot sets of various power</emph>. The ``normal'' + Mandelbrot set is on key <tt>1</tt>. +<p> + On key <tt>6</tt> is a fractal called <emph>Newton</emph>. It is Newton's famous formula for finding roots. +<p> + On key <tt>7</tt> is the <emph>fourth ordered Newton</emph> fractal. +<p> + On key <tt>8</tt> is a fractal called <emph>Barnsley</emph>. +<p> + On key <tt>9</tt> is <emph>Barnsley's second</emph> fractal. +<p> + On key <tt>0</tt> is <emph>Barnsley's third</emph> fractal. +<p> + With keys <tt>SHIFT-A</tt> you can display a fractal called <emph>octo</emph>. It is a fractal that Thomas + discovered in fractint. +<p> + With keys <tt>SHIFT-B</tt> you can display a fractal called <emph>Phoenix</emph>. It is a very nice and quite famous fractal. +<p> + With keys <tt>SHIFT-C</tt> you can display a fractal called <emph>Magnet</emph>. This fractal has quite a complex formula so it is + a bit slow. +<p> + With keys <tt>SHIFT-D</tt> you can display the <emph>Magnet2</emph> fractal. +<p> + The rest of the built-in fractals are accessible through an other menu, but + you can still use the hotkeys. +<p> + On <tt>SHIFT-E</tt> is a fractal called <emph>Triceratops</emph> found by Arpad. +<p> + On <tt>SHIFT-F</tt> is a fractal called <emph>Catseye</emph> found by Arpad. + This is more interesting if you change the bailout value. +<p> + On <tt>SHIFT-G</tt> is a fractal called <emph>Mandelbar</emph>. It was in + Gnofract4d, and they found it at: + http://mathworld.wolfram.com/MandelbarSet.html +<p> + On <tt>SHIFT-H</tt> is the <emph>Lambda</emph> fractal. +<p> + On <tt>SHIFT-I</tt> and <tt>SHIFT-J</tt> are the <emph>Manowar</emph> + and <emph>Spider</emph> fractals, they were found by users of fractint. + (Scott Taylor or Lee Skinner) + It was on http://spanky.triumf.ca/www/fractint/ + taylor_skinner_type.html +<p> + The next 3 fractals are famous classic fractals. +<p> + On <tt>SHIFT-K</tt> is the <emph>Sierpinski</emph> Gasket. + You can change its shape by selecting another Julia seed. + (This is for technical reasons.) +<p> + On <tt>SHIFT-L</tt> is the <emph>Sierpinski Carpet.</emph> + It's shape can also be changed by selecting another Julia seed. +<p> + On <tt>SHIFT-M</tt> is the <emph>Koch Snowflake.</emph> +<p> + + +<head>Out-coloring modes</head> + + To make fractals yet more interesting, more coloring modes for points + outside the set are provided. ``Classical coloring mode'' uses the number of + iterations that the orbit required to escape to (nearly) infinity. You can change this + mode from the <emph>Fractal menu</emph> or by pressing key <tt>C</tt> + To see more about coloring modes, try the tutorial on <tutor incolor.xaf>Incoloring modes</tutor> from the XaoS features overview. +<p> + Those cryptic names for coloring modes are mathematical formulae, where <emph>iter</emph> means number + of iterations, <emph>real</emph> means real coordinate of last orbit, and <emph>imag</emph> means imaginary + coordinate of last orbit. +<p> +<head>In-coloring mode</head> + + In-coloring mode is similar to out-coloring, except that it changes how + things inside the set are displayed. This can also be changed from the <emph>fractal + menu</emph> or by pressing <tt>F</tt>. + <p> + You might also want to see the tutorial on + <tutor outcolor.xaf>Out-coloring modes</tutor> from the XaoS features overview. + +<head>Planes</head> + + All fractals displayed by XaoS are functions with a complex parameter. It + can be displayed in the normal complex plane, where x is the real part of + the number, and y is the imaginary part; but it can also be displayed in + a number of other planes. You can select the plane to use from the + <emph>Fractal menu</emph>, or by pressing <tt>I</tt>. +<p> + Like the coloring modes, planes have cryptic names. You guessed it, they're + mathematical formulae. Here <tt>mu</tt> means coordinates in the normal + complex plane. If you have coordinates in <tt>1/mu</tt> plane, and you need + coordinates in the a complex plane (to calculate the Mandelbrot set) you + simply use the coordinates as mu. Lambda is another plane that can be + converted to mu using a similar formula. + <p> +<dl> + <dt>mu + <dd>normal mode. + + <dt>1/mu + <dd>Inversion: infinity goes to 0 and 0 goes to infinity. + + <dt>1/(mu+0.25) + <dd>Similar to inversion, but moves the center outside of the + Mandelbrot set so that it looks parabolic. + + <dt>lambda + <dd>Lambda plane. + + <dt>1/lambda + <dd>Inversion of lambda plane. + + <dt>1/lambda-1 + <dd>Inversion with moved center. + + <dt>1/(mu-1.40115) + <dd>A very interesting mode for the Mandelbrot set. It makes small things + big, so you can browse the set's details easily. +</dl> +<p> + +<head>Mandelbrot/Julia switching</head> + + Most of the fractals displayed by XaoS (currently all of them) have two + forms: Mandelbrot and Julia. Every point in a Mandelbrot set has its + own Julia set. To see more about this correspondence, try the tutorial on + <tutor julia.xaf>Julia set</tutor> from the Introduction to fractals. +<p> + In the Mandelbrot mode, you can get a corresponding Julia by moving the mouse + to an interesting point and pressing <tt>M</tt>. To get back press <tt>M</tt> + again. Some fractals (Barnsley and phoenix) are already in their Julia + versions, because the Mandelbrot ones are boring. But by pressing <tt>M</tt> + in such fractal you should get the Mandelbrot version, and by choosing another + point as the base point and pressing <tt>M</tt> again you should get a + completely different fractal. The most interesting points for Julia sets + are at the boundaries of the Mandelbrot set. Most of the Julias inside or + outside the set are boring. +<p> + +<head>Fast Julia preview mode</head> + + Fast Julia mode is a quick way to find a point to use as a base for the Julia + set.. Just press <tt>J</tt> and a small Julia set will be displayed in the top + left corner. Then move the mouse around with button 1 depressed, and the Julia + for the point the mouse is over will be automatically generated. + +<head>Palette</head> + + If you think that the default XaoS colors are ugly or you are just + bored by them you can change it by pressing <tt>P</tt>. XaoS will + automatically generate random palettes. Many of them look ugly, so + press <tt>P</tt> again to get another one until you find one you like. +<p> +<head>Filters</head> + + Many interesting effects are done by post-calculation <a filter>filters</a>. + XaoS has filters that do everything from embossing, through motion-blurring, + right through to turning the fractal into a stereogram. To enable them use + the <tt>filter menu</tt> or press <tt>E</tt>. +<p> +<head>Palette cycling</head> + + This is a very old trick that makes the Mandelbrot set a little flashier. You + may enable or disable it using <tt>Y</tt>. In the truecolor modes you need + to enable the <a palettef>palette emulator filter</a> first. This is done + via the <tt>E</tt> key, or from the filter menu. +<p> +<head>Changing number of iterations</head> + + To calculate fractals perfectly, you need an infinite number of + iterations. XaoS does just the first few of them, so after lots of zooming + you may get into a place that looks quite boring, and the boundaries of the + set are rounded, without any interesting details. This can be changed by + changing the number of iterations: + <p> + Press and hold <tt>arrow right</tt> and wait until iterations are high enough. + This may slow down calculation much. To reduce number of iterations + press <tt>arrow left</tt>. + +<head>Changing resolution</head> + + XaoS usually starts in a low resolution (320x200 or thereabouts) to make + calculations faster. If you have a fast computer or you need to + save bigger <tt>.gif</tt> images, you may change the resolution. This + can be done by pressing <tt>=</tt> in the full screen drivers, or simply + by resizing the XaoS window. + +<head>Changing driver</head> + + XaoS usually has more than one driver available. You may change it on + the fly in case you want a different one. For example, XaoS started in X11 + can be switched at runtime to use the AA driver. This can be done from the + UI menu. + <p> + This action is bit dangerous, because XaoS can crash during initialization + if there is some problem with initialization; XaoS tries to initialize a new + driver, and if it fails it attempts to return back to the original. Sometimes + this is impossible, and all XaoS can do is terminate.. + +<head>Other features</head> +XaoS has many other features, but they don't fit into this tutorial. Most of +them are available from the menu, so you can experiment with them. You might +also want to see the <emph>animated tutorials</emph> from the <emph>help menu</emph>, +to have an idea what XaoS can do. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%menus +<main><head>Menus, functions and command line parameters</head></main> +All XaoS functions are referenced by a central function registry. The +scripting language, menus, dialogs and command line options are built +from this database. This section contains information about all functions +available in this registry. +<menuitems><center> +<p><submenu><a root>Root menu</a> +<p><submenu><a animroot>Animation root menu</a> +<p><submenu><a plc>Replay only commands</a> +%end +<p><submenu><a linemenu>Line drawing functions</a> +<p><submenu><a animf>Animation functions</a> +<p><submenu><a time>Timing functions</a> +<p><submenu><a file>File</a> +<p><submenu><a edit>Edit</a> +<p><submenu><a fractal>Fractal</a> +<p><submenu><a calc>Calculation</a> +<p><submenu><a mfilter>Filters</a> +<p><submenu><a ui>UI</a> +<p><submenu><a misc>Misc</a> +<p><submenu><a helpmenu>Help</a> +<p><submenu><a xtextpos>Horizontal text position</a> +<p><submenu><a ytextpos>Vertical text position</a> +<p><submenu><a mformula>Formulae</a> +<p><submenu><a palettemenu>Palette</a> +</center></menuitems> +<node root, , animroot, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%root + +<notex> +<menuhead><head>Root menu</head></menuhead> +This menu is usually displayed at the top of the screen or window. It contains all +currently available submenus. During animation another menu is displayed--the +<a animroot>Animation root menu</a>. +<menuitems><center> +<p><submenu><a file>File</a> +<p><submenu><a fractal>Fractal</a> +<p><submenu><a calc>Calculation</a> +<p><submenu><a mfilter>Filters</a> +<p><submenu><a ui>UI</a> +<p><submenu><a misc>Misc</a> +<p><submenu><a helpmenu>Help</a> +</center></menuitems> +</notex> +<node animroot, root, plc, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%animroot + +<menuhead><head>Animation root menu</head></menuhead> +This menu is displayed at the top of the screen when animation replay is active. +<menuitems><center> +<p><submenu><a file>File</a> +<p><a stopreplay>Stop replay</a> +<p><submenu><a helpmenu>Help</a> +<p><submenu><a ui>UI</a> +</center></menuitems> +<node stopreplay, , , animroot> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%stopreplay +<head>Stop replay</head> +Terminate animation replay. +<p> +<emph>Available as</emph>: menu item + + + +<node plc, animroot, linemenu, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%plc +<menuhead><head>Replay only commands</head></menuhead> +Some commands, such as timing primitives or animation functions, are available +only in animation files. +<menuitems><center> +<p><submenu><a linemenu>Line drawing functions</a> +<p><submenu><a animf>Animation functions</a> +<p><submenu><a time>Timing functions</a> +<p><a load>Include file</a> +</center></menuitems> +<node load, , , plc> + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%load +<head>Include file</head> +<p><emph>Syntax</emph>:(load file) +<p> +This function lets you include another file in your script. It works similarly +to <tt>#include</tt> in C or <tt>load</tt> in Scheme. +The file is searched for in the same directory as the current source file. +<p> +<emph>Available as</emph>: command + +<node linemenu, plc, animf, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%linemenu + +<menuhead><head>Line drawing functions</head></menuhead> +XaoS has support for drawing lines. These functions are available only in +animations and could be used to show some parts of fractals or draw simple +diagrams. See the tutorial ``<tutor intro.xaf>Introduction to fractals</tutor>'' +for examples of this feature. +<p> +Lines can be drawn in <emph>screen</emph> coordinates, where 0,0 +is the top left corner and 1,1 is bottom right, <emph>scaled</emph> +coordinates, which are similar, but scaled to keep 0,0--1,1 rectangular, +or <emph>Fractal</emph> coordinates, to draw a line at an exact position +on the screen. +<p> +The color of the line should be specified by the <a color><tt>color</tt></a> command. +You might draw an arbitrary number of lines and, later, morph them. Each line is +identified by a unique numeric key; the current key can be set using <tt>linekey</tt>. +Commands for changing lines operate on the line with the current key. +(Lines drawn in sequence have consecutive numbers.) +<p> +For example: +<p><tt> +(color 'red)<br> +(line 'scaled 0.3 0.5 0.7 0.5)<br> +(line 'scaled 0.3 0.5 0.7 0.5)<br> +(line 'scaled 0.3 0.5 0.3 0.5)<br> +(line 'scaled 0.7 0.5 0.7 0.5)<br> +(linekey 0)<br> +(morphline 'scaled 0.3 0.3 0.7 0.3)<br> +(morphline 'scaled 0.3 0.7 0.7 0.7)<br> +(morphline 'scaled 0.3 0.3 0.3 0.7)<br> +(morphline 'scaled 0.7 0.3 0.7 0.7)<br> +(usleep 1000000)<br> +</tt><p> +Creates line morphing to rectangle. +<notex> +<menuitems><center> +<p><a line>Draw line</a> +<p><a morphline>Morph line</a> +<p><a morphlastline>Morph last line</a> +<p><a linekey>Set line key</a> +<p><a clearline>Clear line</a> +<p><a clearlines>Clear all lines</a> +</center></menuitems> +</notex> +<notex> +<node line, , morphline, linemenu> +</notex> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%line + + +<notex> +<head>Draw line</head> +</notex> +<p><emph>Syntax</emph>:(line keyword complex complex) +<p> +Draw line between two points. +<tt>keyword</tt> specifies type of coordinates and should be one of the +following: <tt>`fractal</tt>, <tt>`screen</tt> or <tt>`scaled</tt>. +This function also increases the line key. +<p> +<emph>Available as</emph>: command + +<notex> +<node morphline, line, morphlastline, linemenu> +</notex> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%morphline + + +<notex> +<head>Morph line</head> +</notex> +<p><emph>Syntax</emph>:(morphline keyword complex complex) +<p> +Morph current line to given coordinates. +<tt>keyword</tt> specifies type of coordinates and should be one of the +following: <tt>`fractal</tt>, <tt>`screen</tt> or <tt>`scaled</tt>. +The line will start moving at the next <a time>timing command</a>, and reach the +final position before the end of it. +This function also increases the line key. +<p> +<emph>Available as</emph>: command + +<notex> +<node morphlastline, morphline, linekey, linemenu> +</notex> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%morphlastline + + +<notex> +<head>Morph last line</head> +</notex> +<p><emph>Syntax</emph>:(morphlastline keyword complex complex) +<p> +This function has the same functionality as <a morphline>morphline</a>, but it doesn't +increase the line key, and touches the line with the previous key. This is useful when +you want to move a just-drawn line--you don't need to set <a linekey>linekey</a> back. +<p> +<emph>Available as</emph>: command + +<notex> +<node linekey, morphlastline, clearline, linemenu> +</notex> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%linekey +<notex> +<head>Set line key</head> +</notex> +<p><emph>Syntax</emph>:(linekey integer) +<p> +Set current line key. +<p> +<emph>Available as</emph>: command + +<notex> +<node clearline, linekey, clearlines, linemenu> +</notex> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%clearline +<notex> +<head>Clear line</head> +</notex> +<p><emph>Syntax</emph>:(clearline) +<p> +Clear current line. This function also increases the line key. +<p> +<emph>Available as</emph>: command + +<notex> +<node clearlines, clearline, , linemenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%clearlines +<head>Clear all lines</head> +</notex> +<p><emph>Syntax</emph>:(clearlines) +<p> +Clear all displayed lines. Lines can also be cleared using the +<tt>clearscreen</tt> or <tt>display</tt> commands available from the <a misc>Misc menu</a>. +<p> +<emph>Available as</emph>: command + +<node animf, linemenu, time, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%animf + +<menuhead><head>Animation functions</head></menuhead> +These functions are used to animate fractal state--to zoom, unzoom and morph +various parameters. They should be used only in animation files. +Animations are usually performed for a time selected by an immediately following +<a time>timing function</a>. +For example: +<p><tt> +(view 0 0 1 1)<br> +(morphview 0 0 2 2)<br> +(usleep 5000000) +</tt><p> +Will do a 5 second long unzooming animation. +<menuitems><center> +<p><a animateview>Animate view</a> +<p><a smoothmorph>Smooth morphing</a> +<p><a morphview>Morph view</a> +<p><a morphjulia>Morph julia</a> +<p><a moveview>Move view</a> +<p><a morphangle>Morph angle</a> +<p><a zoom>Zooming functions</a> +</center></menuitems> +<node animateview, , smoothmorph, animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%animateview +<head>Animate view</head> +<p><emph>Syntax</emph>:(animateview float float float float) +<p> +This function is almost identical to function <a uiview><tt>view</tt></a>. +It expects that the view will be changed only slightly, so recalculation is done +with <tt>ANIMATE</tt> priority. This means that dynamic resolution is used by +default. +<p> +Viewport is selected by the center and two radiuses (real and imaginary). See +<a uiview><tt>view</tt></a> for more information. +<p> +<emph>Available as</emph>: command + +<node smoothmorph, animateview, morphview, animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%smoothmorph +<head>Smooth Morphing</head> +<p><emph>Syntax</emph>:(morphview keystring starttime endtime) +This function lets you smoothly start and stop morphing. Specify +starttime and stoptime as nonzero, and morphing will speed up and slow down for +that number of usecs. +<p> +The keystring is used to select what morphing you want to control. It is one of +the following: +<dl> +<dt>'view +<dd>control <a morphview>morphview</a> +<dt>'angle +<dd>control <a morphangle>morphangle</a> +<dt>'julia +<dd>control <a morphjulia>morphjulia</a> +<dt>'line +<dd>control <a morphline>morphline</a> +</dl> +<node morphview, smoothmorph, morphjulia, animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%morphview +<head>Morph view</head> +<p><emph>Syntax</emph>:(morphview float float float float) +For the time selected by the next <a usleep><tt>usleep</tt></a> or other timing function, the viewpoint is smoothly morphed from +the current one to that selected by <tt>morphview</tt>. +<p> +Viewport is selected by the center and two radiuses (real and imaginary). See +<a uiview><tt>view</tt></a> for more information. +<p> +This function can easily be used for creating zooming/unzooming animations using position files. +This is an example position file generated by XaoS: +<p><tt> +(initstate)<br> +(defaultpalette 0)<br> +(formula 'mandel)<br> +(view -1.64128273713 -5.50393226816E-05 9.69332308848E-08 + 9.69332308834E-08)<br> +</tt><p> +By replacing the <tt>view</tt> command with <tt>morphview</tt> and +adding <tt>usleep</tt> you can create a zooming animation: +<p><tt> +(initstate)<br> +(defaultpalette 0)<br> +(formula 'mandel)<br> +(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08 + 9.69332308834E-08)<br> +(usleep 10000000) +</tt><p> + + +<emph>Available as</emph>: command + +<node morphjulia, morphview, moveview, animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%morphjulia +<head>Morph Julia</head> +<p><emph>Syntax</emph>:(morphjulia complex) +For the time selected by the next <a usleep><tt>usleep</tt></a> or other timing function, the Julia seed +is smoothly interpolated from the current one to that selected by <tt>morphjulia</tt>. By default this will +cause recalculation of the whole screen. +To avoid this, use <a fastjulia>fast Julia mode</a>. +<p> +A simple animation morphing Julia seed in the X axis: +<p><tt> +(initstate)<br> +(fastjulia #t)<br> +(juliaseed -2 0)<br> +(morphjulia 2 0)<br> +(usleep 2000000)<br> +</tt><p> +<p> +<emph>Available as</emph>: command + +<node moveview, morphjulia, morphangle, animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%moveview +<head>Move view</head> +<p><emph>Syntax</emph>:(moveview complex) +Smoothly move the image center to another position. +<p> +<emph>Available as</emph>: command + +<node morphangle, moveview, zoom, animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%morphangle +<head>Morph angle</head> +<p><emph>Syntax</emph>:(morphangle float) +Smoothly rotate the image to another angle. By default rotation causes +recalculation of the whole screen. To avoid this you need to enable +<a rotate>fast rotate mode</a>. Don't forget to disable it later, since +it slows down other animations. +<p>A simple ``rotozooming'' animation: +<p><tt> +(initstate)<br> +(fastrotate #t)<br> +(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br> +9.69332308834E-08)<br> +(morphangle 300)<br> +(usleep 10000000)<br> +(wait)<br> +(fastrotate #f)<br> +</tt><p> +<emph>Available as</emph>: command + +<node zoom, morphangle, , animf> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%zoom zoom unzoom stop +<head>Zooming functions</head> +<p> +The functions for zooming/unzooming were created mainly for recording +animations. In manually created animation files, it is easier to use +<a morphview><tt>morphview</tt></a>. +<p> +<p><emph>Syntax</emph>:(zoomcenter complex) +This function sets the center to zoom in on. The center is given as a position +in fractal coordinates. +<p> +<emph>Available as</emph>: command +<p><emph>Syntax</emph>:(zoom) +Start zooming to the area specified by <tt>zoomcenter</tt>. +<p> +The speed of zooming should be controlled by the function <a speed><tt>speed</tt></a> +or in a more exact way by <tt>maxstep</tt> and <tt>speedup</tt>. +<p> +<p><emph>Syntax</emph>:(unzoom) +<p> +Start unzooming from the area specified by <tt>zoomcenter</tt>. +<p> +<emph>Available as</emph>: command +<p><emph>Syntax</emph>:(stop) +Stop zooming or unzooming. +<p> +<emph>Available as</emph>: command + +<node time, animf, file, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%time + +<menuhead><head>Timing functions</head></menuhead> +Timing functions are used to control the animation replay daemon. It can wait +for a given time, or wait until calculation is complete. The animation functions +are controlled by such waiting; animations that are running while delays start +keep running through the delay. +<menuitems><center> +<p><a usleep>Usleep</a> +<p><a textsleep>Wait for text</a> +<p><a wait>Wait for complete image</a> +</center></menuitems> +<node usleep, , textsleep, time> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%usleep +<head>Usleep</head> +<p><emph>Syntax</emph>:(usleep integer) +<p> +This function waits for a given amount of time (in usec) before processing +the next command. The screen is recalculated and displayed at the beginning of +usleep if necessary necessary. The remaining time is spent in waiting or +performing animation. +<p> +<emph>Available as</emph>: command + +<node textsleep, usleep, wait, time> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%textsleep +<head>Wait for text</head> +<p><emph>Syntax</emph>:(textsleep) +<p>This function's behavior is very similar to <a usleep><tt>usleep</tt></a>, +but the time is calculated from the number of letters currently displayed +onscreen. If you want to wait just long enough for the user to read the subtitle, +use this function. The user can alter the replay speed as desired using +<a letterspersec><tt>letterspersec</tt></a>. This value can be changed during +replay with the arrow keys. +<p> +<emph>Available as</emph>: command + +<node wait, textsleep, , time> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%wait +<head>Wait for complete image</head> +<p><emph>Syntax</emph>:(wait) +<p> +Wait until the image is complete. You should always use this function after +zooming or unzooming when dynamic resolution is in use. This ensures that +the image calculation will be complete so the user can see the result before +the animation continues. It may also be useful in combination with filters like +<a blur>motion blur</a>. +<p> +This function deadlocks if used with <a animf>animation functions</a>; don't +do that. +<p> +<emph>Available as</emph>: command + +<node file, time, edit, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%file + +<menuhead><head>File</head></menuhead> +<menuitems><center> +<p><a loadpos>Load</a> +<p><a savepos>Save</a> +<p><a record>Record</a> +<p><a play>Replay</a> +<p><a saveimg>Save image</a> +<p><a loadexample>Load random example</a> +<p><a savecfg>Save configuration</a> +<p><submenu><a quit>Quit</a> +</center></menuitems> +<node loadpos, , savepos, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%loadpos +<head>Load XaoS position file</head> +<p> +Load a XaoS position file (<tt>*.xpf</tt>). +See the <a format>format description</a> for more information. +<p> +<emph>Available as</emph>: menu item, command line option + +<node savepos, loadpos, record, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%savepos +<head>Save XaoS position file</head> +<p><emph>Syntax</emph>:(savepos file) +<p> +Save current state to a XaoS position file (<tt>*.xpf</tt>). This file is +human-readable, and can easily be improved by hand after saving, or used as +a base for animations. +See the <a format>format description</a> for more information. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node record, savepos, play, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%record +<head>Record animation</head> +<p><emph>Syntax</emph>:(record bool [ file ]) +<p>e +Toggle recording to a XaoS animation file (<tt>*.xaf</tt>). This file is +human-readable, and can easily be improved by hand after recording. +See the <a format>format description</a> for more information. +<p> +From the scripting language, <tt>(record #t)</tt> enables recording, and +<tt>(record #f)</tt> disables it. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node play, record, saveimg, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%play +<head>Replay animation</head> +<p> +Replay a XaoS animation file (<tt>.xaf</tt>). +<p> +<emph>Available as</emph>: menu item, command line option + +<node saveimg, play, loadexample, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%saveimg +<head>Save image</head> +<p><emph>Syntax</emph>:(saveimg file) +<p> +Save current state to an image file. This file is in <tt>.png</tt> (portable +network graphics) format, which can be read by many applications varying from +graphics programs all the way to Web browsers. +<p> +This function needs an external library called <tt>libpng</tt>. If the library +wasn't available during compilation, this function is unavailable too. +Please see <tt>INSTALL</tt> for more information about obtaining libpng +and recompiling XaoS. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node loadexample, saveimg, savecfg, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%loadexample +<head>Load random example</head> +<p><emph>Syntax</emph>:(loadexample) +<p> +Choose random <tt>.xpf</tt> file from the <tt>examples</tt> directory and +load it. +You might use it as the starting point for next exploration. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node savecfg, loadexample, quit, file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%savecfg +<head>Save configuration</head> +<p><emph>Syntax</emph>:(savecfg) +<p> +Save current configuration to <tt>~/.xaosrc</tt> (under Unix) or <tt>xaos.cfg</tt> +(under DOS and Windows). XaoS automatically reloads the configuration from this +file when it starts. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node quit, savecfg, ,file> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%quit quitmenu noquit +<head>Quit</head> +<p><emph>Syntax</emph>:(quit) +<p> +Quit XaoS. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node edit, file, fractal, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%edit +<menuhead><head>Edit</head></menuhead> +A fairly ordinary Edit menu. +<menuitems><center> +<p><a undo>Undo</a> +<p><a redo>Redo</a> +<p><a copy>Copy</a> +<p><a paste>Paste</a> +</center></menuitems> +<node undo, , redo, edit> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%undo +<head>Undo</head> +Undo last operation. `Last operation' is quite hard to define in +XaoS (where changes are continuous), so it might be surprising. +I hope it will do what you want. +<p> +<emph>Available as</emph>: menu item +<node redo, undo, copy, edit> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%redo +<head>Redo</head> +Redo last undone operation. See <a undo>undo</a>. +<p> +<emph>Available as</emph>: menu item +<node copy, redo, paste, edit> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%copy +<head>Copy</head> +Copy fractal to clipboard. This is a platform-dependent operation that may +not have an analogue on your platform (e.g. there is no concept of a clipboard +under aalib). +<p> +<emph>Available as</emph>: menu item +<node paste, copy, , edit> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%paste +<head>Paste</head> +Paste fractal from clipboard. This is a platform-dependent operation that may +not have an analogue on your platform (e.g. there is no concept of a clipboard +under aalib). +<p> +<emph>Available as</emph>: menu item + +<node fractal, edit, calc, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%fractal +<menuhead><head>Fractal</head></menuhead> +This menu contains all functions related to fractal parameters and display; +you can change things like the formula used, coloring modes, seeds and much +else. + +<menuitems><center> +<p><a formula>Formula</a> +<p><submenu><a mformula>formulae</a> +<p><a incoloring>Incoloring mode</a> +<p><a outcoloring>Outcoloring mode</a> +<p><a plane>Plane</a> +<p><submenu><a palettemenu>Palette</a> +<p><a uimandelbrot>Mandelbrot mode</a> +<p><a uiperturbation>Perturbation</a> +<p><a uiview>View</a> +<p><a initstate>Reset to defaults</a> +<p><a tcolor>True-color coloring modes</a> +</center></menuitems> +<node formula, , uimandelbrot, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%formula +<head>Formula</head> +<p><emph>Syntax</emph>:(formula keyword) +<p> +Set the current fractal formula. <tt>keyword</tt> should be one of the +following: +<dl> +<dt>'mandel +<dd>Standard <a mandel>Mandelbrot set</a>. +<dt>'mandel3 +<dd><a mandel3>Mandelbrot set, power 3</a>. +<dt>'mandel4 +<dd>Mandelbrot set, power 4. +<dt>'mandel5 +<dd>Mandelbrot set, power 5. +<dt>'mandel6 +<dd>Mandelbrot set, power 6. +<dt>'newton +<dd><a newton>Newton's approximation method</a>. +<dt>'barnsley +<dd><a barnsley>First Barnsley's formula</a>. +<dt>'octo +<dd><a octal>Fractint's octo</a>. +<dt>'phoenix +<dd><a phoenix>Phoenix</a>. +<dt>'magnet +<dd><a magnet>Magnet</a>. +</dl> +<p> +<emph>Available as</emph>: command + +<node uimandelbrot, formula, uiperturbation, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%uimandelbrot julia juliaseed +<head>Mandelbrot/Julia mode</head> +<p> +Most fractals rendered by XaoS can be represented as Mandelbrot sets or Julias. +Each point in the Mandelbrot set has its own Julia set. To learn more about +this correspondence, see the tutorial on the <tutor julia.xaf>Julia set</tutor>. +<p> +This function switches between Mandelbrot and Julia representations. When +switching to Julia, you need to set the seed--a point selected from the +Mandelbrot set. +<p> +If you run this function from the menu, you are prompted for the Julia seed +as a number. Often, this can be clumsy, and it would be easier to specify a +point with the mouse pointer. If you hit the <tt>M</tt> key instead of +using the menu, the current mouse position is used. +<p> +Good seedpoints lie at the boundaries of the Mandelbrot set; other seeds +usually generate quite a boring fractal. You can also explore various seeds +at high speed using the <a fastjulia>Fast Julia mode</a>. +<p> +Not all fractals have Julias, but XaoS can generate fake Julia sets for +those that do not, which use some Julia-like modification of the formula; +so this function is currently usable for all fractal types. +<p> +<emph>Available as</emph>: menu item +<p><emph>Syntax</emph>:(julia bool) +<p> +This function is used to enable/disable julia mode in animation files. +<p> +<emph>Available as</emph>: command line option, command +<p><emph>Syntax</emph>:(juliaseed complex) +<p> +Select the current julia seed. +<p> +<emph>Available as</emph>: command line option, command + +<node uiperturbation, uimandelbrot, uiview, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%uiperturbation perturbation +<head>Perturbation</head> +<p> +Perturbation is a simple trick which changes the point at which orbits start. +Traditionally zero is used, but other values can generate interesting +results too. +<p> +On enabling this function from the menu, you will be asked for a complex +number specifying the perturbation. It is a toggle; selecting it again +resets the perturbation to zero without prompting. +<p> +It can be used to specify a complex number representing a point on the screen. +If you hit the <tt>B</tt> key instead of using the menu, the current mouse +position is used. This too is a toggle, so <tt>B</tt> again will disable +perturbation by setting it to zero. +<p> +This function only has an effect for certain formulae (like the +<a mandel>Mandelbrot set</a>) and only then in <a uimandelbrot>Mandelbrot mode</a>. +<p> +<emph>Available as</emph>: menu item +<p><emph>Syntax</emph>:(perturbation complex) +<p> +This is the scripting-language variation of the perturbation function. Instead +of toggling, you always specify the perturbation to use. Use 0 0 to disable +perturbation. +<p> +<emph>Available as</emph>: command line option, command + +<node bailout, maxiter, fastjulia, calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%bailout bailout +<head>Bailout</head> +<p> +Bailout is the value which is checked for each point of +the orbit if the point is far enough +from the complex zero point in the current iteration. +If the point is far enough, then the iteration immediately +stops and the starting point on the screen will be +painted with a given colour, depending on the fractal +type and many other settings. +<p> +For the <a mandel>Mandelbrot set</a> +this value is 4. Other fractal types usually +have the same bailout value. For most fractals many bailout values +give more or less similar output. E.g., for the second order +Mandelbrot set one can prove that the sequence |z| (z:=z^2+c) tends to +infinity if and only if |z|>2 for some element z of this sequence. +In XaoS program, Bailout value is the square of this 2, i.e. you can change this +to any value greater than 2 for similar results. +<p> +Other fractal types may use other bailout values. The default +is 4 for each types. +<p> +<emph>Available as</emph>: menu item, command line option, command +<p><emph>Syntax</emph>:(bailout float) +<p> + +<node uiview, uiperturbation, initstate, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%uiview view angle +<head>View</head> +<p> +Set your current viewpoint in the fractal. This function is useful when you have +found some interesting coordinates somewhere (on a web page, perhaps) and you +want to see that position in XaoS. +<p> +In the dialog you will be asked for the <emph>center</emph>, <emph>radius</emph> +and <emph>angle</emph> of the image. +<p> +The center specifies the point which is displayed at the center of the screen. +The radius is the radius of a circle around this point; XaoS will size the image +so that this circle only just fits on the screen. The angle gives the rotation of +the image in degrees. +<p> +People specify fractal coordinates in many ways. Some people use the coordinates +of the upper-left and lower-right visible points, specifying the coordinates as four +numbers <math>x1</math>, <math>y1</math>, <math>x2</math>, <math>y2</math>. +To set the same viewpoint in XaoS, set the real portion of the center to +<math>(x1+x2)/2</math>, the imaginary part of center to <math>(y1+y2)/2</math>, and +the radius to the greater of <math>x2-x1</math> and <math>y2-y1</math>. +<p> +Other programs use a zoom factor instead of a radius. For these, you can set the +radius to <math>2/zoom</math>. +<p> +<emph>Available as</emph>: menu item +<p><emph>Syntax</emph>:(view float float float float) +<p> +This function is used to set the visible area of fractal in animation files. +It doesn't let let you specify the angle, (for that, see the separate function +<tt>angle</tt>), but lets you specify an ellipse instead of a circle. You can +specify both a real and an imaginary radius, so you have better control over the +area that will be visible. XaoS will size the image so that the ellipse only just +fits on the screen. +<p> +<emph>Available as</emph>: command line option, command +<p><emph>Syntax</emph>:(angle float) +<p> +Set the rotation angle in degrees. By default this causes recalculation of the +screen. You can enable the <a rotate>fast rotation mode</a>, which lets you +rotate the screen without recalculation; but it slows down other things, so +don't forget to disable it later. +<p> +<emph>Available as</emph>: command line option, command + +<node initstate, uiview, plane, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%initstate +<head>Reset to defaults</head> +<p><emph>Syntax</emph>:(initstate) +<p> +This function resets most of XaoS's values to their defaults. It is useful when +you get lost and want to start from the beginning. It should also be used +as the first command of every animation file, to ensure that the file is always +played with the same settings in effect. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node plane, initstate, incoloring, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%plane mplane plane0 plane1 plane2 plane3 plane4 plane5 plane6 plane7 plane8 plane9 plane10 +<head>Plane</head> +<p><emph>Syntax</emph>:(plane integer) +<p> +All fractals displayed by XaoS are functions with a complex parameter. +They can be be displayed in the normal complex plane where the <tt>x</tt> +coordinate is the real part of the number and the <tt>y</tt> is imaginary; +but they can also be displayed differently: +<dl> +<dt><math>mu</math> +<dd>Normal complex plane (default) +<dt><math>1/mu</math> + <dd>Inversion--infinity is at 0 and + 0 is at infinity. +<dt><math>1/(mu+0.25)</math> + <dd>Similar to inversion, but moves + the center outside the Mandelbrot set, + so it looks parabolic. +<dt><math>lambda plane</math>, <math>1/lambda</math>, <math>1/lambda-1</math> +<dd>Lambda plane and its inversion, and with a different center. +<dt><math>1/(mu-1.40115)</math> + <dd>A very interesting mode for the + Mandelbrot set, this makes small + things large, for easier browsing + of the set's details. +</dl> +The <tutor plane.xaf>tutorial about planes</tutor> has some examples. +<p> + +<p> +In the scripting language, the planes are numbered as follows: +<p> +<dl> +<dt>0 +<dd><math>mu</math> +<dt>1 +<dd><math>1/mu</math> +<dt>2 +<dd><math>1/(mu+0.25)</math> +<dt>3 +<dd><math>lambda</math> +<dt>4 +<dd><math>1/lambda</math> +<dt>5 +<dd><math>1/(lambda-1)</math> +<dt>6 +<dd><math>1/(mu-1.40115)</math> +</dl> +<p> +<emph>Available as</emph>: command line option, command + +<node incoloring, plane, outcoloring, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%incoloring mincoloring in1 in2 in3 in4 in5 in6 in7 in8 in9 in10 in0 +<head>Inside coloring mode</head> +<p><emph>Syntax</emph>:(incoloring integer) +<p> +Areas inside the set are usually filled in black, but this is only a convention; +you could color them in differently to make the fractal look more interesting. +The only method available to make areas inside the set visible is to display +the value of the latest orbit as the value of each pixel. +<p> +The <tutor incolor.xaf>tutorial on incoloring</tutor> has more information and +examples. +<p> +XaoS has many different ways to show that value. The cryptic names of the modes +are mathematical formulae, where <emph>real</emph> means the real part of the +latest orbit, and <emph>imag</emph> means the imaginary part. <emph>zmag</emph> +uses the magnitude of the value. The <emph>Decomposition-like</emph> method uses +the angle of the orbit. Also, <a tcolor>truecolor</a> incoloring modes are available, that +display one value in each of the red, blue and green color planes (or, for some +modes, in each of the hue, saturation and value planes). + +In the scripting language, the incoloring mode is specified by one of the +following integers: +<p> +<dl> +<dt>0 +<dd><math>0</math> (default) +<dt>1 +<dd><math>zmag</math> +<dt>2 +<dd>Decomposition-like +<dt>3 +<dd><math>real/imag</math> +<dt>4 +<dd><math>abs(abs(c)-abs(r))</math> +<dt>5 +<dd><math>cos(mag)</math> +<dt>6 +<dd><math>mag*cos(real^2)</math> +<dt>7 +<dd><math>sin(real^2-imag^2)</math> +<dt>8 +<dd><math>atan(real*imag*creal*cimag)</math> +<dt>9 +<dd>squares +<dt>10 +<dd>Truecolor. To set exact parameters for truecolor coloring use the +<a tcolor><tt>tcolor</tt></a> command. +</dl> +<p> +<emph>Available as</emph>: command line option, command + +<node outcoloring, incoloring, tcolor, fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%outcoloring moutcoloring out1 out2 out3 out4 out5 out6 out7 out8 out9 out10 out0 +<head>Outside coloring mode</head> +<p><emph>Syntax</emph>:(outcoloring integer) +<p> +Outcoloring modes are similar to <a incoloring>incoloring modes</a>, but indicate +how to display the areas outside the set instead. As with incoloring modes, the +value of the latest orbit can be used to determine the color of each pixel, but the +default is to use the number of iterations needed for the value at that point to become +recognisably divergent as the color. +<p> +The <tutor outcolor.xaf>tutorial on outcoloring</tutor> has more information and +examples. +<p> +The cryptic names of the modes are mathematical formulae, where <emph>iter</emph> +means the number of iterations required for the value to become recognisably divergent, +<emph>real</emph> means the real part of the latest orbit, and <emph>imag</emph> +means the imaginary part. <emph>binary decomposition</emph> uses a different color +when the imaginary part of the orbit is lower than zero, and <emph>smooth</emph> +attempts to remove stripes and discontinuities. Also, <a tcolor>truecolor</a> outcoloring +modes are available, that display one value in each of the red, blue and green color planes +(or, for some modes, in each of the hue, saturation and value planes). +<p> +In the scripting language, the outcoloring mode is specified by one of the following +integers: +<p> +<dl> +<dt>0 +<dd><math>iter</math> (default) +<dt>1 +<dd><math>iter+real</math> +<dt>2 +<dd><math>iter+imag</math> +<dt>3 +<dd><math>iter+real/imag</math> +<dt>4 +<dd><math>iter+real+imag+real/imag</math> +<dt>5 +<dd>binary decomposition +<dt>6 +<dd>biomorphs +<dt>7 +<dd>potential +<dt>8 +<dd>color decomposition +<dt>9 +<dd>smooth +<dt>10 +<dd>True-color outcoloring mode. To set exact parameters for truecolor coloring use <a tcolor><tt>outtcoloring</tt></a>. +</dl> +<p> +<emph>Available as</emph>: command line option, command + +<node tcolor, outcoloring, , fractal> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%tcolor intcoloring outtcoloring tincoloring toucoloring int0 int1 int2 int3 int4 int5 int6 int7 int8 int9 int10 int11 outt0 outt1 outt2 outt3 outt4 outt5 outt6 outt7 outt8 outt9 outt10 outt11 +<head>Truecolor coloring mode</head> +<p><emph>Syntax</emph>:(intcoloring integer) +<p><emph>Syntax</emph>:(outtcoloring integer) +<p> +Truecolor coloring modes are similar to <a incoloring>incolor</a> and +<a outcoloring>outcolor</a> coloring modes; but instead of using a palette, +they directly calculate the red, green and blue components of the color. +This lets you display more parameters at once, and produces interesting +and often attractive results. On 8bpp displays you need to enable the +<a palettef>palette emulator filter</a> first to see anything, amd the quality +won't be so good, as far fewer colors are available per parameter. +<p> +The <tutor truecol.xaf>tutorial on truecolor coloring modes</tutor> has more +information and examples. +<p> +The cryptic names of the modes are always three mathematical formulae (one for +each color component), where <emph>real</emph> means the real part of the latest +orbit, and <emph>imag</emph> means the imaginary part. +<p> +To enable inside/outside truecolor coloring mode in the scripting language, +set <tt>incoloring</tt>/<tt>outcoloring</tt> value to 10 (truecolor coloring +mode) before (or after) calling <tt>intcoloring</tt> or <tt>outtcoloring</tt>. +<p> +In the scripting language, the coloring mode is specified by one of the following +integers: +<p> +<dl> +<dt>0 +<dd>black +<dt>1 +<dd><math>re*im</math> <math>sin(re^2)</math> angle +<dt>2 +<dd><math>sin(re)</math> <math>sin(im)</math> <math>sin(square)</math> +<dt>3 +<dd>hsv +<dt>4 +<dd>hsv2 +<dt>5 +<dd><math>cos(re^c)</math> <math>cos(im^2)</math> <math>cos(square)</math> +<dt>6 +<dd><math>abs(re^2)</math> <math>abs(im^2)</math> <math>abs(square)</math> +<dt>7 +<dd><math>re*im</math> <math>re*re</math> <math>im*im</math> +<dt>8 +<dd><math>abs(im*cim)</math> <math>abs(re*cre)</math> <math>abs(re*cim)</math> +<dt>9 +<dd><math>abs(re*im-csqr)</math> <math>abs(re^2-csqr)</math> <math>abs(im^2-csqr)</math> +</dl> +<p> +<emph>Available as</emph>: command line option, command + +<node calc, fractal, mfilter, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%calc + +<menuhead><head>Calculation</head></menuhead> +This menu contains functions that control calculation parameters such as +the maximum iteration count and periodicity checking. +<menuitems><center> +<p><a range>Solid guessing</a> +<p><submenu><a dynamic>Dynamic resolution</a> +<p><a periodicity>Periodicity checking</a> +<p><a maxiter>Iterations</a> +<p><a bailout>Bailout</a> +<p><a fastjulia>Fast Julia mode</a> +<p><a dynamic>Dynamic resolution</a> +<p><a rotate>Rotation</a> +</center></menuitems> +<node range, , periodicity, calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%range mguess guess0 guess1 guess2 guess3 guess4 guess5 guess6 guess7 guess8 guess9 guessall +<head>Solid guessing range</head> +<p><emph>Syntax</emph>:(range integer) +<p> +XaoS has a solid guessing optimization: if all corners of a rectangle have +the same color, it assumes that the whole rectangle is a solid colored block, +and doesn't calculate points inside the rectangle. This optimization saves +lots of calculation, but sometimes introduces errors. This value alters the +maximum size of the rectangle that can be guessed at one time. The default +value is 3; use 0 to disable the optimization. +<p> +<emph>Available as</emph>: command line option, command + +<node periodicity, range, maxiter, calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%periodicity +<head>Periodicity checking</head> +<p><emph>Syntax</emph>:(periodicity bool) +<p> +Periodicity checking is one way to speed up the calculation. Areas inside the +set always need <a maxiter><tt>maxiter</tt></a> iterations to determine that +the point is probably inside the set (while it is rare for areas outside to +need anywhere near that much). Often the orbital trajectory falls into a +periodic, repeating cycle; if that can be detected, the calculation can be +stopped early, as there's no way that the orbit can ever leave the cycle +again (hence it cannot diverge, hence the point must be inside the set). +<p> +Implementating this method efficiently is quite problematic. It slows down +the cases where cycles are not found, because cycle-checking is quite hard work +and has to take place for all points, even those that don't become cyclic. +Because of the inexactness of floating-point calculations, the cycles are +never exact, so you need to use an error value. Higher error values mean that +cycles will be detected sooner, while lower error values increase the +exactness of the calculation. Higher values can introduce serious errors, +especially at the front of the Mandelbrot set. XaoS detects this automatically +and corrects for it in most cases, but sometimes it might be wrong. Also, +other optimizations in XaoS (such as boundary tracing) don't give this method +much of a chance to run, since areas inside the set are usually not +calculated at all. +<p> +That's why the advantages of this optimization are questionable. You should +probably experiment with enabling and disabling it. Sometimes XaoS is faster +with this enabled, sometimes when disabled. Also, this method works only +when <a incoloring>incoloring</a> methods are disabled, and only for some +fractal types (some fractal types, e.g. newton, don't have any concept of +an area `inside the set' at all.) +<p> +The tutorial chapter ``<tutor escape.xaf>Escape time fractals</tutor>'' has +more information on fractal calculation in XaoS, and there is a lengthy +section in the hacker's manual (<tt>xaosdev.texinfo</tt>) devoted to the +subject. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node maxiter, periodicity, bailout, calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%maxiter +<head>Iterations</head> +<p><emph>Syntax</emph>:(maxiter integer) +<p> +When the fractal set is calculated, a orbital trajectory is examined for each +point. If the orbit diverges to infinity, the point is outside the set. +Otherwise, the point is inside the set. For exact calculations, you need to +know the entire orbital trajectory, which is infinitely long for areas inside +the set, so fractals cannot be calculated exactly. By default, XaoS calculates +at most 170 positions (iterations) and then gives up; if the point is still +inside the bail-out value, it guesses that the point is inside the set. +<p> +When zoomed into a detailed area, especially one close to the set boundary, +this value could become too low, and the fractal will become boring. +You might try increasing this value if you want to get the image interesting +again; but this necessarily slows down the calculation at the same time. +<p> +The tutorial chapter ``<tutor escape.xaf>Escape time fractals</tutor>'' has +more information on fractal calculation in XaoS, and there is a lengthy +section in the hacker's manual (<tt>xaosdev.texinfo</tt>) devoted to the +subject. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node fastjulia, bailout, dynamic, calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%fastjulia +<head>Fast Julia mode</head> +<p><emph>Syntax</emph>:(fastjulia bool) +<p> +By default, changing the seed for the Julia set requires recalculation of the +image (which is quite slow). It's a nice effect to change the seed smoothly and +show the Julia set morphing as the seed changes. XaoS has a special algorithm +which can calculate such morphings in realtime. It is very inexact, but it is +good enough for a fast preview. +<p> +If you want to select a good seedpoint, enable fast Julia mode and find a +nice place by dragging with the first mouse button depressed; then change to +the <a uimandelbrot>Julia mode</a> to see the exact image. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node dynamic, fastjulia, rotate, calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%dynamic nodynamic dynamicanimation dynamicnew fastmode + +<menuhead><head>Dynamic resolution</head></menuhead> +<p><emph>Syntax</emph>:(fastmode keyword) +<p> +XaoS performs many optimizations, but fairly often this is not enough. In order +to keep a high framerate, XaoS automatically lowers the resolution of the image, +increasing it when there is time for more calculation. This feature is enabled by +default when animating, but you might also like to enable it for new images +(which makes the image `come into focus' when it is recalculated from scratch for +whatever reason), or disable it completely if you don't like it. +<p> +In the scripting languge, the keyword should be one of the following: +<dl> +<dt><tt>'never</tt> +<dd>Disable dynamic resolution +<dt><tt>'animate</tt> +<dd>Use only for animations (default) +<dt><tt>'new</tt> +<dd>Use also for new images +</dl> +<node rotate, dynamic, , calc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%rotate norotate controtate mouserotate rotationspeed autorotate fastrotate + +<menuhead><head>Image rotation</head></menuhead> + +XaoS has support for rotation of the image to any angle. By default, changing +the angle requires recalculation of the whole screen, but when +<emph>fast rotation mode</emph> is enabled, the angle can be changed smoothly. +In this mode XaoS calculates a larger non-rotated image and rotates it when +needed, so it increases memory requirements and slows XaoS down; hence, it +should be disabled when rotation is not being used. +<p> +The user interface provides two rotation modes--<emph>rotate by +mouse</emph> which allows the angle to be changed by dragging with the first +mouse button depressed, and <emph>continuous rotation mode</emph>, where the image +is rotated clockwise continuously, and the arrow keys can be used to change +the rotiation speed. +<p><emph>Syntax</emph>:(fastrotate bool) +<p> +This function is used to enable and disable fast rotation mode. +<emph>Available as</emph>: command line option, command +<head>Automatic rotation</head> +<p><emph>Syntax</emph>:(autorotate bool) +<p> +Use this function to enable continuous rotation. In the scripting language you +can also use <a morphangle><tt>morphangle</tt></a> to get an outwardly similar +but more controllable effect. +<p><emph>Syntax</emph>:(rotationspeed float) +<p> +Specify the speed of continuous rotation, in degrees per second. +Negative values are allowed and rotate anticlockwise. +<p> +<emph>Available as</emph>: menu item, command line option, command + + + +<node mfilter, calc, ui, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%mfilter + +<menuhead><head>Filters</head></menuhead> +Filters are a post-calculation effect applied to the resulting image. They +can do things like motion blurring, edge detection, emulation of palettes +or truecolor on displays that can't handle them, and such things. There is +a <tutor filter.xaf>tutorial chapter</tutor> about them. +<p> +<menuitems><center> +<p><a filter>Filter command</a> +<p><a edge>Edge detection</a> +<p><a edge2>Edge detection2</a> +<p><a starfield>Starfield</a> +<p><a stereogram>Random dot stereogram</a> +<p><a interlace>Interlace filter</a> +<p><a blur>Motion blur</a> +<p><a emboss>Emboss</a> +<p><a palettef>Palette emulator</a> +<p><a anti>Antialiasing</a> +<p><a truecolor>Truecolor emulator</a> +</center></menuitems> +<node filter, , edge, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%filter +<head>Filter command</head> +<p><emph>Syntax</emph>:(filter keyword bool) +<p> +This command is used to enable or disable <a mfilter>filters</a>. +The <emph>keyword</emph> specifies the filter to change, and should be one of +the following: +<p> +<dl> +<dt><tt>'edge</tt> +<dd><a edge>Edge detection</a> +<dt><tt>'edge2</tt> +<dd><a edge2>Edge detection2</a> +<dt><tt>'starfield</tt> +<dd><a starfield>Starfield</a> +<dt><tt>'stereogram</tt> +<dd><a stereogram>Random dot stereogram</a> +<dt><tt>'interlace</tt> +<dd><a interlace>Interlace filter</a> +<dt><tt>'blur</tt> +<dd><a blur>Motion blur</a> +<dt><tt>'emboss</tt> +<dd><a emboss>Emboss</a> +<dt><tt>'palette</tt> +<dd><a palette>Palette emulator</a> +<dt><tt>'anti</tt> +<dd><a anti>Antialiasing</a> +<dt><tt>'truecolor</tt> +<dd><a truecolor>Truecolor</a> +</dl> +<p> +<emph>Available as</emph>: command +<node edge, filter, edge2, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%edge +<head>Edge detection</head> +<p> +This filter is a standard edge detection algorithm; solid areas are filled +in black. Some fractals look very interesting with this filter (and some +areas of some fractals just look like noise). This version of the filter produces +relatively wide lines, so is useful at higher resolutions. The filter +<a edge2>edge detection2</a> makes thinner lines, for the low resolution modes. +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node edge2, edge, starfield, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%edge2 +<head>Edge detection2</head> +<p> +This filter is a standard edge detection algorithm; solid areas are filled +in black. Some fractals look very interesting with this filter (and some +areas of some fractals just look like noise). This version of the filter produces +relatively tight lines, so is useful at lower resolutions. The filter +<a edge>edge detection</a> makes thinner lines, for the high resolution modes. +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node starfield, edge2, stereogram, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%starfield +<head>Starfield</head> +<p> +The starfield filter generates random stars whose density depends on the +iteration count. Choose your favorite spiral fractal and enable this filter +to get a Grand Design spiral galaxy :) +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node stereogram, starfield, interlace, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%stereogram +<head>Random dot stereogram</head> +<p> + Fractal images are good as a base for random dot stereograms. In + case you don't know what these are, please point your browser to + Google or another search engine and find some articles about such + images, because learning to read such images takes some effort. They + make it possible to generate three dimensional images on a normal monitor + without any additional hardware, by exploiting bugs in the human brain + (although you need two working eyes, and some people never learn to + see them; they can simply ignore this feature). +<p> + XaoS is able to generate these images in animations, so you may use + all normal XaoS functions (except palette changing and palette rotation, + which makes no sense applied to a stereogram). To make the animation yet + more exciting, XaoS emulates ``falling'' into the set; while you zoom in, + your distance from the set drops and drops--but you never hit it; when the + set reaches the level of your monitor, the distance is changed again so + you are far away. +<p> + To make this work right, XaoS needs to know the <emph>exact size of your + monitor</emph>. Because most platforms have no way to determine this, you need to + use <emph>command line options</emph> to tune it. If it's not set or is wrong, + the stereograms will probably be impossible to see (if your monitor is too + big or resolution too low), or the images will seem to be shallow (if your + monitor is too small or resolution too high). +<p> + By default XaoS expects my 15" monitor (29.0cm x 21.5 cm). Another + cause of problems is the virtual screen supported by some windowed + environments (like some X servers) that makes a program think that the + resolution is higher than it actually is, and you see only part of + this extra-large screen. +<p> + The worst thing you could possibly do is to run full-screen XaoS in some + graphical windowing system (OS/2 on top of Windows or Wine on top of Linux, + perhaps) where XaoS can't tell the real size of its window at all. In such + cases, it's normally better (not to mention faster) to run XaoS natively, + rather than under such an emulation layer. +<p> + The following command line options are provided to specify sizes: +<p> +<dl> +<dt><tt>-screenwidth</tt>, <tt>-screenheight</tt> + <dd>Lets you specify the size of your screen in centimeters. Note that + you need to specify the size of the visible image on the monitor, not + the size with edge borders, or the size of the tube. The simplistic + `my monitor is 17", just turn 17" into centimeters' doesn't work; + that 17" is a marketing figure and has only a vague connection to + reality. Get out a ruler and measure it. + + <dt><tt>-pixelwidth</tt>, <tt>-pixelheight</tt> + <dd>Lets you specify the exact size of a single pixel, if XaoS cannot + determine this for itself from your screen size. +</dl> +<p> + These options are used by some other parts of XaoS as well, so you should + use them even when you don't want to see stereograms. You should probably + write a small starting script (or alias, or shortcut; whatever your environment + uses) that passes the correct parameters to XaoS. +<p> + If the window is <emph>smaller than 8cm in any direction</emph>, you will probably be + unable to see anything; make the window bigger. + + The correct way to see XaoS stereograms is: +<dl> + <dt>1 + <dd>Start XaoS with options specifying the exact size of your screen or one pixel on it + <dt>2 + <dd>Sit 60cm away from monitor + <dt>3 + <dd>If you use a windowed environment, resize XaoS's window to make it wider than, say, 15 cm. + <dt>4 + <dd>Enable the filter (by pressing <tt>E</tt>) + <dt>5 + <dd>focus on a point far away from the monitor (try to use your + own reflection, if your monitor's not antireflective); the random blurring should + eventually fall into the pattern of a Mandelbrot set. + <dt>6 + <dd>Carefully use your mouse to zoom into interesting areas + (it is easy to lose concentration when you are not trained; but you can use + the autopilot...) + <dt>7 + <dd>Enjoy animation :) +</dl> +<p> + If you still can't see the stereograms, it could be that the fractal, or your eye, + is deformed. A deformed fractal can be caused by your specifying your monitor size + wrongly. Visual problems that damage depth perception, as well as problems like + astigmatism, can make it impossible to see stereograms at all. +<notex> +<p> +<a filter>More information about filters</a> +</notex> + +<p> +<emph>Available as</emph>: menu item, command line option + +<node interlace, stereogram, blur, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%interlace +<head>Interlace filter</head> +<p> +The interlace filter halves the horizontal resolution, and in each frame alternates +between drawing only the even and only the odd lines. This speeds up the +calculation, and in higher resolutions produces a motion-blur-like effect. +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node blur, interlace, emboss, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%blur +<head>Motion blur</head> +<p> +Motion blur mixes the current frame with previous ones to produce a +motion-blur effect. It might be rather slow in 16bpp truecolor modes. The best +results can probably be seen in 8bpp modes, so you might want to enable the +<a palettef>palette filter</a> first. +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node emboss, blur, palettef, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%emboss +<head>Emboss</head> +<p> +This is a standard emboss filter, as seen in programs such as the GIMP or +Photoshop. It produces especially nice results with the smooth +<a outcoloring>outcoloring mode</a>. +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node palettef, emboss, anti, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%palettef +<head>Palette emulator</head> +<p> +XaoS can work in either palette or <a truecolor>truecolor</a> mode. Both modes +have advantages and disadvantages. Palette mode allows effects such as palette +rotation, while truecolor mode allows smoother <a incoloring>incoloring</a> +and <a outcoloring>outcoloring</a> modes and the +<a tcolor>truecolor coloring</a> modes. If your display is truecolor, you +can enable this filter to get palette emulation (albeit not as cheaply as in +a real paletted mode). +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node anti, palettef, truecolor, mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%anti +<head>Antialiasing</head> +<p> +Antialiasing is a technique to increase image quality by eliminating jagged +edges. XaoS calculates four values for each pixel (on the subpixel boundaries) +and uses the average of them for the pixel value. +<p> +This filter slows XaoS down a <emph>lot</emph> and greatly increases memory +requirements. It is useful mainly when you want to save images and want to make +them look as nice as possible. Antialiasing also helps a lot when you want to +encode JPEG or MPEG files; they are much shorter if antialiased (MPEG and JPEG +hate jagged edges). +<notex> +<p> +<a filter>More information about filters</a> +</notex> +<p> +<emph>Available as</emph>: menu item, command line option + +<node truecolor, anti, , mfilter> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%truecolor +<head>Truecolor emulator</head> +<p> +XaoS can work in either <a palettef>palette</a> or truecolor mode. Both modes +have advantages and disadvantages. Palette mode allows effects such as palette +rotation, while truecolor mode allows smoother <a incoloring>incoloring</a> +and <a outcoloring>outcoloring</a> modes and the +<a tcolor>truecolor coloring</a> modes. If your display is 8bpp, you can enable +this filter to get truecolor emulation (but, obviously, not with as many colors +as a real truecolor display). +<p> +<a filter>More information about filters</a> +<p> +<emph>Available as</emph>: menu item, command line option + +<node ui, mfilter, misc, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ui uia + +<menuhead><head>UI</head></menuhead> + +This menu contains functions to control the user interface layer of XaoS: +zooming speed, the autopilot, realtime status information, and so on. + +<menuitems><center> +<p><a speed>Zooming speed</a> +<p><a letterspersec>Letters per second</a> +<p><a autopilot>Autopilot</a> +<p><a recalculate>Recalculate</a> +<p><a interrupt>Interrupt</a> +<p><a nogui>Disable XaoS's builtin GUI</a> +<p><a status>Status</a> +<p><a ministatus>Ministatus</a> +</center></menuitems> +<node speed, , letterspersec, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%speed speedup maxstep +<head>Zooming speed</head> +<p><emph>Syntax</emph>:(speed float) +<p> +Change zooming speed, where 1 is the default, 2 means twice as fast, and so on. +<p> +<emph>Available as</emph>: menu item, command line option, command +<p> +In the scripting language you can use the following functions for better +control: +<p><emph>Syntax</emph>:(maxstep float) +<p> +Selects the zooming/unzooming speed. The parameter specifies how much of the +range will be removed each twentieth of a second; 0 means nothing, 1 means +everything (the parameter obviously has to be less than 1). +Higher values mean faster zooming. +<p> +<emph>Available as</emph>: command +<p><emph>Syntax</emph>:(speedup float) +When zooming/unzooming, every twentieth of a second the <tt>speedup</tt> +value is added to the current step until <tt>maxstep</tt> is reached. +So this value selects the rate at which zooming stops and starts. +Both these functions are more for internal use of XaoS then for manually +written scripts, but they could come in useful nonetheless. +<p> +<emph>Available as</emph>: command + +<node letterspersec, speed, autopilot, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%letterspersec animletterspersec +<head>Letters per second</head> +<p><emph>Syntax</emph>:(letterspersec integer) +<p> +Speed of subtitles for the <a textsleep><tt>textsleep</tt></a> function. +The user can set this value to suit; it can also be changed with the left and +right arrow keys during animation replay. +<p> +<emph>Available as</emph>: command line option, command + +<node autopilot, letterspersec, recalculate, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%autopilot +<head>Autopilot</head> +<p><emph>Syntax</emph>:(autopilot bool) +<p> + To make XaoS yet more impressive, we made a special autopilot mode that + automatically drives into interesting boundaries of the set; you should + press <tt>A</tt>, play your favorite music, drink coffee and relax. I never + tried this but it should be really relaxing! Many pictures in the XaoS + gallery were discovered using the autopilot. +<p> + The autopilot also has some additional features. It backtracks if the + zoomed picture is not interesting anymore, and can detect when it's zoomed + into really a boring part of the fractal or reached the limit of floating + point arithmetic on the platform, and restart zooming from the top. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node recalculate, autopilot, interrupt, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%recalculate +<head>Recalculate</head> +<p><emph>Syntax</emph>:(recalculate) +<p> +Recalculate current fractal. This should be used when the fractal on the +screen is strange because of error propagation caused by +<a range>solid guessing</a>. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node interrupt, recalculate, nogui, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%interrupt animinterrupt +<head>Interrupt</head> +<p><emph>Syntax</emph>:(interrupt) +<p> +Interrupt current calculation. +<p> +<emph>Available as</emph>: menu item, command line option, command + + +<node nogui, interrupt, status, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%nogui +<head>Disable XaoS's builtin GUI</head> +<p><emph>Syntax</emph>:(nogui bool) +<p> +Disable XaoS menus and dialogs. This function should be used by external GUI +programs; these manipulate XaoS via a pipe, so the internal GUI should be +disabled at the same time. See the hacker's manual (<tt>xaosdev.texinfo</tt>) +for more details. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node status, nogui, ministatus, ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%status animstatus +<head>Status</head> +<p><emph>Syntax</emph>:(status bool) +<p> +Enable/disable status information. This displays some useful information +about the current fractal, such as viewpoint etc. (In low-resolution modes it +also almost completely obscures the current fractal...) +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node ministatus, status, , ui> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ministatus animministatus +<head>Ministatus</head> +<p><emph>Syntax</emph>:(ministatus bool) +<p> +Enable/disable status line. This contains basic information such as how +much you are zoomed and the framerate. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node misc, ui, helpmenu, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%misc + +<menuhead><head>Misc</head></menuhead> +Miscellaneous functions. +<menuitems><center> +<p><a command>Command</a> +<p><a renderanim>Render animation</a> +<p><a clearscreen>Clear screen</a> +<p><a display>Display fractal</a> +<p><a text>Display text</a> +<p><a color>Color</a> +<p><submenu><a xtextpos>Horizontal text position</a> +<p><submenu><a ytextpos>Vertical text position</a> +<p><a textposition>Text position</a> +<p><a message>Message</a> +</center></menuitems> +<node command, , renderanim, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%command +<head>Command</head> +<p> +You can invoke all XaoS functions using a simple command language reminiscent +of Scheme. This option lets you run a single command. If you want to run more +than one, you might want to use an <a format>XaoS animation file</a> instead; +they are written in the same language. +<p> +<emph>Available as</emph>: menu item + +<node renderanim, command, clearscreen, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%renderanim +<head>Render animation</head> +<p> +Render an animation to image files. See <a video>How to encode video files</a> +for more information. +<p> +<emph>Available as</emph>: menu item, +<node clearscreen, renderanim, display, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%clearscreen +<head>Clear screen</head> +<p><emph>Syntax</emph>:(clearscreen) +<p> +Clear the screen. To display the fractal again, use <a display><tt>display</tt></a>. +This function is mainly useful in tutorials and similar animations. +<p> +<emph>Available as</emph>: menu item, command + +<node display, clearscreen, text, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%display +<head>Display fractal</head> +<p><emph>Syntax</emph>:(display) +<p> +Display fractal. This functions reverses the effect of the <tt>clearscreen</tt>, +line drawing and text output functions. +<p> +<emph>Available as</emph>: menu item, command + +<node text, display, color, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%text +<head>Display text</head> +<p><emph>Syntax</emph>:(text string) +<p> +Display the given text on the screen. This function is mainly useful in tutorials. +Text should be cleared by printing lots of spaces, or using the +<a clearscreen><tt>clearscreen</tt></a> or <a display><tt>display</tt></a> +functions. You might also want to use the <a textposition><tt>textposition</tt></a> +function to select the part of the screen to display the text on. +<p> +To wait for the user to read the text, you can use the <a textsleep><tt>textsleep</tt></a> +function. +<p> +Example: +<p><tt> +(clearscreen)<br> +(textposition 'center 'middle)<br> +(text "Welcome into my animation")<br> +(textsleep)<br> +(display)<br> +</tt><p> +<emph>Available as</emph>: menu item, command line option, command + +<node color, text, textposition, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%color +<head>Color</head> +<p><emph>Syntax</emph>:(color keyword) +<p> +Change text and line color. <emph>keyword</emph> should be one of <tt>'white</tt>, +<tt>'black</tt> and <tt>'red</tt>. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node textposition, color, message, misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%textposition +<head>Text position</head> +<p><emph>Syntax</emph>:(textposition keyword keyword) +<p> +Select <a text>text</a> position. The first keyword specifies the horizontal +position, the second the vertical position. The horizontal position should be +one of <tt>'left</tt>, <tt>'center</tt>, and <tt>'right</tt>. +The vertical should be one of <tt>'top</tt>, <tt>'middle</tt>, and <tt>'bottom</tt>. +<p> +<emph>Available as</emph>: command line option, command + +<node message, textposition, , misc> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%message +<head>Message</head> +<p><emph>Syntax</emph>:(message string) +<p> +This function is almost identical to the <a text><tt>text</tt></a> function, +except that it uses message catalogs in the <tt>catalog</tt> directory to +translate messages into other languages. It should be used only in the multi-lingual +XaoS tutorials. +<p> +<emph>Available as</emph>: command line option, command + +<node helpmenu, misc, xtextpos, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%helpmenu + +<menuhead><head>Help</head></menuhead> +This menu contains help and tutorials. +<notex> +<menuitems><center> +<p><a help>Help</a> +</center></menuitems> +<node help, , , helpmenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%help +<head>Help</head> +<p><emph>Syntax</emph>:(help) +<p> +Display the main help page. +<p> +<emph>Available as</emph>: menu item, command line option, command +</notex> + +<node xtextpos, helpmenu, ytextpos, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%xtextpos + +<menuhead><head>Horizontal text position</head></menuhead> +Select the horizontal position used to display <a text>text</a>. +It can be placed at the left, in the center or at the right. +<notex> +<menuitems><center> +<p><a xtextleft>Left</a> +<p><a xtextcenter>Center</a> +<p><a xtexteight>Right</a> +</center></menuitems> +<node xtextleft, , xtextcenter, xtextpos> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%xtextleft +<head>Left</head> +<p> +Draw <a text>text</a> at the left side of the screen. +<p> +<emph>Available as</emph>: menu item + +<node xtextcenter, xtextleft, xtexteight, xtextpos> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%xtextcenter +<head>Center</head> +<p> +Draw <a text>text</a> in the center of the screen. +<p> +<emph>Available as</emph>: menu item + +<node xtexteight, xtextcenter, , xtextpos> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%xtexteight +<head>Right</head> +<p> +Draw <a text>text</a> at the right side of the screen. +<p> +<emph>Available as</emph>: menu item +</notex> + +<node ytextpos, xtextpos, mformula, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ytextpos + +<menuhead><head>Vertical text position</head></menuhead> +Select the vertical position used to display <a text>text</a>. It can be +placed at the top, in the middle or at the bottom of the screen. +<notex> +<menuitems><center> +<p><a ytextup>Up</a> +<p><a ytextmiddle>Middle</a> +<p><a ytextbottom>Bottom</a> +</center></menuitems> +<node ytextup, , ytextmiddle, ytextpos> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ytextup +<head>Up</head> +<p> +Draw <a text>text</a> at the top of the screen. +<p> +<emph>Available as</emph>: menu item + +<node ytextmiddle, ytextup, ytextbottom, ytextpos> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ytextmiddle +<head>Middle</head> +<p> +Draw <a text>text</a> in the middle of the screen. +<p> +<emph>Available as</emph>: menu item + +<node ytextbottom, ytextmiddle, , ytextpos> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%ytextbottom +<head>Bottom</head> +<p> +Draw <a text>text</a> at the bottom of the screen. +<p> +<emph>Available as</emph>: menu item +</notex> + +<node mformula, ytextpos, palettemenu, menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%mformula + +<menuhead><head>formulae</head></menuhead> +<p> +Each escape time fractal has its own formula. XaoS supports the following +formulae: +<p> +<menuitems><center> +<p><a mandel>Mandelbrot</a> +<p><a mandel3>Mandelbrot^3</a> +<notex> +<p><a mandel4>Mandelbrot^4</a> +<p><a mandel5>Mandelbrot^5</a> +<p><a mandel6>Mandelbrot^6</a> +</notex> +<p><a octal>Octal</a> +<p><a newton>Newton</a> +<p><a barnsley>Barnsley1</a> +<p><a phoenix>Phoenix</a> +<p><a magnet>Magnet</a> +</center></menuitems> +<node mandel, , mandel3, mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%mandel +<head>Mandelbrot</head> +<p> +The Mandelbrot set is the most famous escape time fractal ever. It has the +simple formula <math>z=z^2+c</math>. See the <tutor mset.xaf>tutorial chapter</tutor>. +<p> +<emph>Available as</emph>: menu item, command line option + +<node mandel3, mandel, octal, mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%mandel3 mandel4 mandel5 mandel6 +<head>Mandelbrot^3--Mandelbrot^6</head> +<p> +This fractal is a simple modification of the standard +<a mandel>Mandelbrot set</a> formula, using <math>z=z^3+c</math> instead of +<math>z=z^2+c</math>. +<p> +Other derivations of the Mandelbrot set (Mandelbrot^4 and so on) use even +higher powers. See the <tutor power.xaf>tutorial chapter</tutor>. +<p> +<emph>Available as</emph>: menu item, command line option +<node octal, mandel3, newton, mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%octal +<head>Octal</head> +<p> +This is a less well-known fractal that Thomas discovered in Fractint. +It has an interesting shape when displayed in the alternative +<a mplane>planes</a>. See the <tutor octo.xaf>tutorial chapter</tutor>. +<p> +<emph>Available as</emph>: menu item, command line option + +<node newton, octal, barnsley, mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%newton +<head>Newton</head> +<p> +This is Newton's approximation method for finding the roots of a polynomial. It +uses the polynomial <math>x^3=1</math> and counts the number of iterations needed +to reach the approximate value of the root. See the <tutor newton.xaf>tutorial chapter</tutor>. +<p> +This fractal doesn't have Julia sets, but XaoS is able to generate Julia-like +sets which are also very interesting (they are sometimes called ``Nova +formulae''). +<p> +<emph>Available as</emph>: menu item, command line option + +<node barnsley, newton, phoenix, mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%barnsley +<head>Barnsley1</head> +<p> +This is a formula by Michael Barnsley. It produces very nice crystalline Julia +sets. See the <tutor barnsley.xaf>tutorial chapter</tutor>. +<p> +<emph>Available as</emph>: menu item, command line option + +<node phoenix, barnsley, magnet, mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%phoenix +<head>Phoenix</head> +<p> +This formula produces very nice Julia sets. +See the <tutor phoenix.xaf>tutorial chapter</tutor>. +<p> +<emph>Available as</emph>: menu item, command line option + +<node magnet, phoenix, , mformula> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%magnet +<head>Magnet</head> +<p> +This is a formula that comes from theoretical physics. +It is derived from the study of theoretical lattices in the context of magnetic +renormalization transformations. +See the <tutor phoenix.xaf>tutorial chapter</tutor>. +<p> +<emph>Available as</emph>: menu item, command line option + +<node palettemenu, mformula, , menus> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%palettemenu + +<menuhead><head>Palette</head></menuhead> +This menu contains functions to change the palette the fractal is displayed with. +<menuitems><center> +<p><a defpalette>Default palette</a> +<p><a randompalette>Random palette</a> +<p><a palette>Custom palette</a> +<p><a cycling>Color cycling</a> +<p><a shiftpalette>Shift palette</a> +</center></menuitems> +<node defpalette, , randompalette, palettemenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%defpalette +<head>Default palette</head> +<p><emph>Syntax</emph>:(defaultpalette number) +<p> +Create a default palette. In the scripting language, <tt>number</tt> specifies +how much the palette is shifted by. +<p> +Note that changing the palette in truecolor modes forces recalculation of +the whole screen. To avoid this, you can enable the +<a palettef>palette emulation filter</a> first. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node randompalette, defpalette, palette, palettemenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%randompalette +<head>Random palette</head> +<p><emph>Syntax</emph>:(randompalette) +<p> +Create a random palette. XaoS will automatically pick one of its +palette-generation algorithms and create one. +<p> +Note that changing the palette in truecolor modes forces recalculation of +the whole screen. To avoid this, you can enable the +<a palettef>palette emulation filter</a> first. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node palette, randompalette, cycling, palettemenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%palette +<head>Custom palette</head> +<p><emph>Syntax</emph>:(palette integer integer integer) +<p> +A custom palette lets you re-create some of the random palettes. The first value +specifies the algorithm, which should currently be one of the following: +<dl> +<dt>0 +<dd>Default palette +<dt>1 +<dd>Black to color gradient +<dt>2 +<dd>Black to color to white gradient +<dt>3 +<dd>Cubistic-like algorithm. +</dl> +The seed specifies a random seed for the palette; different seeds generate +different palettes. The last value is the amount by which the palette is shifted. +<p> +Note that changing the palette in the truecolor modes forces recalculation of +the whole screen. To avoid this, you can enable the +<a palettef>palette emulation filter</a> first. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node cycling, palette, shiftpalette, palettemenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%cycling rcycling cyclingspeed +<head>Color cycling</head> +<p><emph>Syntax</emph>:(cycling bool) +<p> +Color cycling is an old and simple effect to animate fractals. The Mandelbrot +set looks particularly nice when color-cycled. On truecolor displays, color +cycling fails to initialize (since those displays don't have a palette). +You can enable <a palettef>palette emulation filter</a> to make it possible. +<p> +<emph>Available as</emph>: menu item, command line option, command +<p> +In the user interface, colors can also be cycled in the opposite direction +with the ``<emph>Reversed color cycling</emph>'' function. +<p> +To control the cycling speed, you coan use arrow keys or the +``<emph>Color cycling speed</emph>'' function. +<p> +<emph>Available as</emph>: menu item +<p><emph>Syntax</emph>:(cyclingspeed integer) +<p> +The parameter specifies the number of skips per second. It can be negative to +cycle in the opposite direction. +<p> +<emph>Available as</emph>: menu item, command line option, command + +<node shiftpalette, cycling, , palettemenu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%shiftpalette fshift bshift +<head>Shift palette</head> +<p><emph>Syntax</emph>:(shiftpalette integer) +<p> +Shift palette by the specified number of cells. This can be used to tune the +palette's position on the fractal. You can also use the +<emph>Shift one forward</emph> and <emph>Shift one backward</emph> functions +for fine-tuning. Note that shifted and rotated palettes could look different on +different displays (because they may have different palette sizes). +<p> +Shifting the palette on truecolor displays causes a recalculation of the screen. +To avoid this, you could use <a palettef>palette emulation filter</a>. +<p> +<emph>Available as</emph>: menu item, command line option, command + + +%endmenus +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%gpl + +<head>GNU GENERAL PUBLIC LICENSE</head> +<center>Version 2, June 1991<p> + + Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br> + 675 Mass Ave, Cambridge, MA 02139, USA<br> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +</center> +<head>Preamble</head> + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +<p> + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +<p> + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +<p> + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +<p> + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +<p> + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +<p> + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +<p> + The precise terms and conditions for copying, distribution and +modification follow. + +<head>GNU GENERAL PUBLIC LICENSE<p>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</head> + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +<p> +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +<p> + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +<p> +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +<p> + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +<dl> +<dt> +<dd> +<p> +a) + You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. +<p> +b) + You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. +<p> +c) + If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +</dl> +<p> +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +<p> +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +<p> +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +<p> + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +<dl> +<dt> +<dd> +<p> +a) + Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, +<p> +b) + Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, +<p> +b) + Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +<p> +</dl> +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +<p> +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. +<p> + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +<p> + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +<p> + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +<p> + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +<p> + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +<p> + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +<p> + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. +<p> + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. +<p> + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +<p> +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +<p> + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + +<head>NO WARRANTY</head> + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +<p> + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +<p> +<center>END OF TERMS AND CONDITIONS</center> +<head>How to Apply These Terms to Your New Programs</head> +<p> + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +<p> + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +<p> +<emph> +<tt> + (one line to give the program's name and a brief idea of what it + does.)<br> + Copyright (C) 19yy (name of author) +<p> + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +<p> + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +<p> + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +</tt> +</emph> +<p> +Also add information on how to contact you by electronic and paper mail. +<p> +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +<p> +<emph> +<tt> + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +</tt> +</emph> +<p> +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. +<p> +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +<p> +<emph> +<tt> + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. +<p> + (signature of Ty Coon), 1 April 1989 + Ty Coon, President of Vice +</tt> +</emph> +<p> +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%end |