XScreenSaver(1) XScreenSaver(1) NNAAMMEE epicycle - draws a point moving around a circle which moves around a cicle which... SSYYNNOOPPSSIISS eeppiiccyyccllee [-display _h_o_s_t_:_d_i_s_p_l_a_y_._s_c_r_e_e_n] [-root] [-window] [-mono] [-install] [-noinstall] [-visual _v_i_z] [-colors _N] [-foreground _n_a_m_e] [-color-shift _N] [-delay _m_i_c_r_o_s_e_c_o_n_d_s] [-holdtime _s_e_c_o_n_d_s] [-linewidth _N] [-min_circles _N] [-max_circles _N] [-min_speed _n_u_m_b_e_r] [-max_speed _n_u_m_b_e_r] [-harmonics _N] [-timestep _n_u_m_b_e_r] [-divisor_poisson _p_r_o_b_a_- _b_i_l_i_t_y] [-size_factor_min _n_u_m_b_e_r] [-size_factor_max _n_u_m_- _b_e_r] DDEESSCCRRIIPPTTIIOONN 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. OOPPTTIIOONNSS --ddiissppllaayy _h_o_s_t_:_d_i_s_p_l_a_y_._s_c_r_e_e_n Specifies which X display we should use (see the section DISPLAY NAMES in XX(1) for more information about this option). --rroooott Draw on the root window. --wwiinnddooww Draw on a newly-created window. This is the default. --mmoonnoo If on a color display, pretend we're on a monochrome display. If we're on a mono display, we have no choice. --iinnssttaallll Install a private colormap for the window. --nnooiinnssttaallll Don't install a private colormap for the window. --vviissuuaall _v_i_z 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, X Version 11 27-Apr-97 1 XScreenSaver(1) XScreenSaver(1) color, staticgray, staticcolor, truecolor, grayscale, greyscale, pseudocolor, directcolor, _n_u_m_b_e_r If a decimal or hexadecimal number is used, XXGGeettVViissuuaallIInnffoo(3X) is consulted to obtain the required visual. --ccoolloorrss _N How many colors should be used (if possible). The colors are chosen randomly. --ffoorreeggrroouunndd _n_a_m_e With --mmoonnoo, this option selects the foreground colour. --ddeellaayy _m_i_c_r_o_s_e_c_o_n_d_s Specifies the delay between drawing successive line segments of the path. If you do not specify --ssyynncc, 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 --mmoonnoo is specified). --hhoollddttiimmee _s_e_c_o_n_d_s When the figure is complete, _e_p_i_c_y_c_l_e pauses this number of seconds. --lliinneewwiiddtthh _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. --mmiinn__cciirrcclleess _N Smallest number of epicycles in the figure. --mmaaxx__cciirrcclleess _N Largest number of epicycles in the figure. --mmiinn__ssppeeeedd _n_u_m_b_e_r Smallest possible value for the base speed of rev- olution of the epicycles. The actual speeds of the epicycles vary from this down to _m_i_n___s_p_e_e_d _/ _h_a_r_m_o_n_i_c_s.. --mmaaxx__ssppeeeedd _n_u_m_b_e_r Smallest possible value for the base speed of rev- olution of the epicycles. --hhaarrmmoonniiccss _N Number of possible harmonics; the larger this value is, the greater the possible variety of X Version 11 27-Apr-97 2 XScreenSaver(1) XScreenSaver(1) possible speeds of epicycle. --ttiimmeesstteepp _n_u_m_b_e_r 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. --ddiivviissoorr__ppooiissssoonn _p_r_o_b_a_b_i_l_i_t_y 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 --hhaarrmmoonniiccss 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 --hhaarrmmoonniiccss 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. --ssiizzee__ffaaccttoorr__mmiinn _n_u_m_b_e_r Epicycles are always at least this factor smaller than their parents. --ssiizzee__ffaaccttoorr__mmaaxx _n_u_m_b_e_r Epicycles are never more than this factor smaller than their parents. RREESSOOUURRCCEESS 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 --ttiimmeesstteepp option multiplied by the timestepCoarseFactor resource. The X Version 11 27-Apr-97 3 XScreenSaver(1) XScreenSaver(1) default value of 1 will almost always work fast enough and so this resource is not available as a command-line option. UUSSEERR IINNTTEERRFFAACCEE 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. HHIISSTTOORRYY 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 _P_r_i_n_c_i_p_i_a _M_a_t_h_e_m_a_t_i_c_a was published in 1687, and proved that Kepler's laws derived from Newtonian gravita- tion. BBUUGGSS 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. CCOOPPYYRRIIGGHHTT 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. AAUUTTHHOORR James Youngman , April 1998. X Version 11 27-Apr-97 4