epicycle(6x)
π« epicycle(6x) β the XScreenSaver manual, but make it cute π«
okay bestie, so this is a page from the XScreenSaver manual and honestly? it's giving math girlboss. it draws a point going around a circle, which goes around another circle, which goes around another circle, andβ¦ you get it. iykyk π
πΈ NAME πΈ
epicycle β draws a point moving around a circle which moves around a circle whichβ¦ π (yes the sentence literally never finishes, that's the joke, 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]
like, that's a LOT of flags but we're gonna go through every single one, no cap π«Ά
π¦ DESCRIPTION π¦
so epicycle 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 it produces can be simple or complex, convex or concave β but bestie, they're 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 with X resources. your world, your rules π
π OPTIONS π
--display host:display.screenβ specifies which X display we should use (peep the section DISPLAY NAMES inX(1)for more info on this one).--rootβ draws on the root window.--window-id numberβ draws on the specified window.--windowβ draws on a newly-created window. this is the default, main character behavior π--monoβ if we're on a color display, pretend we're on a monochrome display. if we're on a mono display, we have no choice (girl, none).--installβ installs a private colormap for the window.--noinstallβ doesn't install a private colormap for the window.--visual vizβ specifies 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) gets consulted to obtain the required visual. like it literally goes and asks π§
--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 don't 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--monois specified).--holdtime secondsβ when the figure is complete,epicyclepauses this number of seconds. little breather π--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 tomin_speed / harmonics.--max_speed numberβ smallest possible value for the base speed of revolution of the epicycles. (yes, that's what it says β we keep it exactly as the page says it π«‘)--harmonics Nβ number of possible harmonics; the larger this value is, the greater the possible variety of possible speeds of epicycle. more variety = more chaos = slay π--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--harmonicsoption. 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--harmonicsoption. 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β displays the current frame rate and CPU load.--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.
π±οΈ USER INTERFACE π±οΈ
the program runs mostly without user interaction (lowkey just vibing on its own). 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 gets abandoned and another one gets started. β¨ new figure, new me β¨
π HISTORY π
grab a snack, this is a whole saga π
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 way that this is literally a whole history-of-science speedrun ππ₯
π 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 yeah, don't run this over a potato connection, ngl π
π± ENVIRONMENT π±
DISPLAYβ to get the default host and display number.XENVIRONMENTβ 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) β go read those too bestie, they're the parent friend group π
π 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.
translation: it's free, do what you want, but keep the copyright notice and don't come for anyone if it breaks π (also no warranty, fr fr)
β AUTHOR β
James Youngman <jay@gnu.org>, April 1998. an icon, honestly π
and that's the whole page!! πΈ this came from X Version 11, and the page itself is dated 6.09 (07-Jun-2024) β mwah, go draw some circles bestie ππ
π¦ where this page comes from
- debian trixie: xscreensaver-data-extra 6.09+dfsg1-1 Β· Other_1
- opensuse-leap 16.0: xscreensaver-data-extra 6.09-bp160.1.11 Β· BSD-3-Clause AND GPL-2.0-or-later
- opensuse-leap 16.0: xscreensaver-data-extra 6.09-bp160.1.11 Β· BSD-3-Clause AND GPL-2.0-or-later
- opensuse-leap 16.0: xscreensaver-data-extra 6.09-bp160.1.11 Β· BSD-3-Clause AND GPL-2.0-or-later
- opensuse-leap 16.0: xscreensaver-data-extra 6.09-bp160.1.11 Β· BSD-3-Clause AND GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms