Provided by: xscreensaver-data-extra_5.34-2ubuntu1_amd64 bug


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


       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  probability]
       [-size_factor_min number] [-size_factor_max number] [-fps]


       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 complex, 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 generated, either with command-line options or X resources.


       -display host:display.screen
               Specifies which X display we should use (see the section DISPLAY NAMES in X(1) 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 a private colormap for the window.

               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(3X) 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 revolution 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 revolution of the epicycles.

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

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

       -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.

       -fps    Display the current frame rate and CPU load.


       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.


       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.


       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 heliocentric
       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  heliocentric  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 gravitation.


       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  ©  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.


       James Youngman <>, April 1998.