Provided by: xscreensaver-data-extra_5.08-0ubuntu3_i386 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  probabil-
        ity] [-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 DIS-
                PLAY 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
        -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
        -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 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
        -size_factor_max number
                Epicycles  are  never  more than this factor smaller than their
        -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 com-
        mand-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  (C)  1998, James Youngman.  Permission to use, copy, modify,
        distribute, and sell this software and its documentation for  any  pur-
        pose  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 repre-
        sentations are made about the suitability of this software for any pur-
        pose.  It is provided "as is" without express or implied warranty.


        James Youngman <>, April 1998.