epicycle(6)
epicycle(6) π« β straight from the XScreenSaver manual, bestie β¨
π NAME π
epicycle β draws a point moving around a circle which moves around a cicle whichβ¦ (yes, βcicleβ is the original spelling and honestly itβs iconic π)
π SYNOPSIS π
epicycle [--display host:display.screen] [--root] [--window-id number][--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]
πΈ DESCRIPTION πΈ
Okay so epicycle draws the path traced by a point on the edge of a circle. That circle rotates around a point on the rim of another circle, and then that keeps happening several times. The random curves it produces can be simple or complex, convex or concave, but they are always closed curves β they never go on indefinitely. Periodt. π
You can configure both the way the curves are drawn and the way the random sequence of circles is generated, either with command-line options or X resources. Itβs giving customizable circle chaos β¨
β¨ OPTIONS β¨
--display host:display.screenβ tells it which X display to use. For the whole explanation of this one, check the sectionDISPLAY NAMESinX(1). π₯οΈ--rootβ draw on the root window.--window-id numberβ draw on the specified window.--windowβ draw on a newly-created window. This is the default, bestie.--monoβ if youβre on a color display, pretend itβs monochrome. If youβre already on a mono display, thereβs no choice. π--installβ install a private colormap for the window.--noinstallβ donβt install a private colormap for the window.--visual vizβ pick 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 you pass a decimal or hexadecimal number, XGetVisualInfo(3X) gets 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.--color-shift Nβ this one appears in the synopsis, but the OPTIONS section on this page does not describe it. A little mystery, a little main character energy π΅οΈββοΈπ--delay microsecondsβ sets 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 and produce a less smooth effect. This is more likely in monochrome mode, either on monochrome servers or when--monois specified. π--holdtime secondsβ when the figure is complete,epicyclepauses for this many seconds.--linewidth Nβ width in pixels of the bodyβs track. Values greater than one may cause slower drawing. The fastest value is usually zero, which means 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 tomin_speed / harmonics. π--max_speed numberβ smallest possible value for the base speed of revolution of the epicycles. (Yes, the page says smallest here too β Iβm not making the rules, Iβm just reporting them π)--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 reduces 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 that is a factor of the base speed. The speed of each epicycle is the base speed divided by some integer between1and the value of the--harmonicsoption. That integer is decided by starting at1and tossing a biased coin: for each consecutive head, the value gets incremented by one. The integer will not be incremented above the value of the--harmonicsoption. The argument of this option decides the bias of the coin β it is the probability that the 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. Then the page says:--timestepoption multiplied by thetimestepCoarseFactorresource. The default value of1will almost always work fast enough and so this resource is not available as a command-line option. That is exactly the lore, bestie β I am not editing it π
π USER INTERFACE π
The program runs mostly without user interaction. When itβs running on the root window, no input is accepted. When itβs running in its own window, the program exits if mouse button 3 is pressed. If any other mouse button is pressed, the current figure is abandoned and another one is started. π±οΈβ¨
π¦ HISTORY π¦
The geometry of epicycles was perfected by Hipparchus of Rhodes at some time around 125 B.C., which was 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. History ate, no cap ππ
π 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. So likeβ¦ gorgeous, but maybe not over a tragic connection ππ
π ENVIRONMENT π
DISPLAYβ used to get the default host and display number.XENVIRONMENTβ used to get the name of a resource file that overrides the global resources stored in theRESOURCE_MANAGERproperty.XSCREENSAVER_WINDOWβ the window ID to use with--root.
π SEE ALSO π
X(1), xscreensaver(1) π«Ά
π COPYRIGHT π
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.
β AUTHOR β
James Youngman <jay@gnu.org>, April 1998. π
X Version 11, version 6.15 (30-Mar-2026) of epicycle(6) β byeee bestie, go trace some circles πβ¨
π¦ where this page comes from
- alpine 3.24: xscreensaver-doc 6.15-r0 Β· GPL-2.0-or-later GPL-3.0-or-later 0BSD MIT
- arch rolling: xscreensaver 6.15-1 Β· LicenseRef-XScreenSaver
- nixpkgs unstable: xscreensaver 6.15
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms