epicycle
XScreenSaver(r)                                   XScreenSaver(r)



NAME
       epicycle  -  draws  a  point  moving around a circle which
       moves around a cicle which...

SYNOPSIS
       epicycle [-display host:display.screen] [-root]  [-window]
       [-mono]  [-install] [-noinstall] [-visual viz] [-colors N]
       [-foreground name] [-color-shift N] [-delay  microseconds]
       [-holdtime   seconds]   [-linewidth  N]  [-min_circles  N]
       [-max_circles N] [-min_speed number]  [-max_speed  number]
       [-harmonics N] [-timestep number] [-divisor_poisson proba-
       bility] [-size_factor_min number]  [-size_factor_max  num-
       ber]

DESCRIPTION
       The  epicycle program draws the path traced out by a point
       on the edge of a circle.  That  circle  rotates  around  a
       point  on  the  rim  of another circle, and so on, several
       times.  The random curves produced can be simple  or  com-
       plex, convex or concave, but they are always closed curves
       (they never go in indefinitely).

       You can configure both the way the curves  are  drawn  and
       the  way in which the random sequence of circles is gener-
       ated, either with command-line options or X resources.

OPTIONS
       -display host:display.screen
               Specifies which X display we should use  (see  the
               section DISPLAY NAMES in X(X) for more information
               about this option).

       -root   Draw on the root window.

       -window Draw on  a  newly-created  window.   This  is  the
               default.

       -mono   If   on  a  color  display,  pretend  we're  on  a
               monochrome display.  If we're on a  mono  display,
               we have no choice.

       -install
               Install a private colormap for the window.

       -noinstall
               Don't install a private colormap for the window.

       -visual viz
               Specify which visual to use.  Legal values are the
               name of a visual class, or the id number  (decimal
               or  hex)  of  a specific visual.  Possible choices
               include

               default,  best,  mono,  monochrome,  gray,   grey,
               color,    staticgray,    staticcolor,   truecolor,
               grayscale,  greyscale,  pseudocolor,  directcolor,
               number

               If  a  decimal  or  hexadecimal  number  is  used,
               XGetVisualInfo(o)  is  consulted  to  obtain  the
               required visual.

       -colors N
               How many colors should be used (if possible).  The
               colors are chosen randomly.

       -foreground name
               With -mono, this  option  selects  the  foreground
               colour.

       -delay microseconds
               Specifies  the  delay  between  drawing successive
               line segments of the path.   If you do not specify
               -sync, some X servers may batch up several drawing
               operations  together,  producing  a  less   smooth
               effect.     This  is  more  likely  to  happen  in
               monochrome mode (on  monochrome  servers  or  when
               -mono is specified).

       -holdtime seconds
               When  the figure is complete, epicycle pauses this
               number of seconds.

       -linewidth N
               Width in pixels of the body's track.    Specifying
               values  greater than one may cause slower drawing.
               The fastest value is  usually  zero,  meaning  one
               pixel.

       -min_circles N
               Smallest number of epicycles in the figure.

       -max_circles N
               Largest number of epicycles in the figure.

       -min_speed number
               Smallest possible value for the base speed of rev-
               olution of the epicycles.  The  actual  speeds  of
               the  epicycles  vary from this down to min_speed /
               harmonics.

       -max_speed number
               Smallest possible value for the base speed of rev-
               olution of the epicycles.

       -harmonics N
               Number  of  possible  harmonics;  the  larger this
               value is, the greater the possible variety of pos-
               sible speeds of epicycle.

       -timestep number
               Decreasing this value will reduce the distance the
               body moves for each line segment, possibly produc-
               ing  a smoother figure.  Increasing it may produce
               faster results.

       -divisor_poisson probability
               Each epicycle rotates at a rate which is a  factor
               of  the base speed.  The speed of each epicycle is
               the base speed divided by some integer  between  1
               and  the  value  of  the  -harmonics option.  This
               integer is decided by starting at 1 and tossing  a
               biased coin.  For each consecutive head, the value
               is incremented by one.  The integer  will  not  be
               incremented  above  the  value  of  the -harmonics
               option.  The argument of this option  decides  the
               bias  of the coin; it is the probability that that
               coin will produce a head at any given toss.

       -size_factor_min number
               Epicycles are always at least this factor  smaller
               than their parents.

       -size_factor_max number
               Epicycles  are never more than this factor smaller
               than their parents.

RESOURCES
            Option            Resource               Default Value
            ------            --------               -------------
            -colors           .colors                100
            -delay            .delay                 1000
            -holdtime         .holdtime              2
            -linewidth        .lineWidth             4
            -min_circles      .minCircles            2
            -max_circles      .maxCircles            10
            -min_speed        .minSpeed              0.003
            -max_speed        .maxSpeed              0.005
            -harmonics        .harmonics             8
            -timestep         .timestep              1.0
            -divisor_poisson  .divisorPoisson        0.4
            -size_factor_min  .sizeFactorMin         1.05
            -size_factor_max  .sizeFactorMax         2.05
                              .timestepCoarseFactor  1.0

       Before the drawing of the figure is begun,  a  preliminary
       calculation  of  the  path  is  done in order to scale the
       radii of the epicycles so as to  fit  the  figure  on  the
       screen or window.  For the sake of speed, This calculation
       is done with a larger timestep than  the  actual  drawing.
       The  time-step  used  is the value of the -timestep option
       multiplied  by  the  timestepCoarseFactor  resource.   The
       default value of 1 will almost always work fast enough and
       so this  resource  is  not  available  as  a  command-line
       option.

USER INTERFACE
       The  program  runs  mostly without user interaction.  When
       running on the root window, no input  is  accepted.   When
       running  in its own window, the program will exit if mouse
       button 3  is  pressed.   If  any  other  mouse  button  is
       pressed,  the current figure will be abandoned and another
       will be started.

HISTORY
       The geometry of epicycles was perfected by  Hipparchus  of
       Rhodes  at  some time around 125 B.C., 185 years after the
       birth of Aristarchus of Samos, the inventor of the  helio-
       centric  universe  model.  Hipparchus applied epicycles to
       the Sun and the Moon.  Ptolemy of Alexandria  went  on  to
       apply  them to what was then the known universe, at around
       150 A.D.  Copernicus went on to apply them to  the  helio-
       centric  model  at the beginning of the sixteenth century.
       Johannes Kepler discovered that the planets actually  move
       in  elliptical  orbits  in about 1602.  The inverse-square
       law of gravity was suggested by Boulliau in  1645.   Isaac
       Newton's  Principia Mathematica was published in 1687, and
       proved that Kepler's laws derived from Newtonian  gravita-
       tion.

BUGS
       The  colour  selection  is re-done for every figure.  This
       may generate too much network traffic for this program  to
       work well over slow or long links.

COPYRIGHT
       Copyright  (C)  1998,  James Youngman.  Permission to use,
       copy, modify, distribute, and sell this software  and  its
       documentation  for  any  purpose is hereby granted without
       fee, provided that the above copyright  notice  appear  in
       all  copies  and  that both that copyright notice and this
       permission notice appear in supporting documentation.   No
       representations  are  made  about  the suitability of this
       software for any purpose.  It is provided "as is"  without
       express or implied warranty.

AUTHOR
       James Youngman <jay@gnu.org>, April 1998.



X Version 11                27-Apr-97             XScreenSaver(r)