version 4, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
XScreenSaver |
|
|
2 |
!!!XScreenSaver |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
OPTIONS |
|
|
7 |
RESOURCES |
|
|
8 |
USER INTERFACE |
|
|
9 |
HISTORY |
|
|
10 |
BUGS |
|
|
11 |
COPYRIGHT |
|
|
12 |
AUTHOR |
|
|
13 |
---- |
|
|
14 |
!!NAME |
|
|
15 |
|
|
|
16 |
|
|
|
17 |
epicycle - draws a point moving around a circle which moves around a cicle which... |
|
|
18 |
!!SYNOPSIS |
|
|
19 |
|
|
|
20 |
|
|
|
21 |
__epicycle__ [[-display ''host:display.screen''] |
|
|
22 |
[[-root] [[-window] [[-mono] [[-install] [[-noinstall] [[-visual |
|
|
23 |
''viz''] [[-colors ''N''] [[-foreground ''name''] |
|
|
24 |
[[-color-shift ''N''] [[-delay ''microseconds''] |
|
|
25 |
[[-holdtime ''seconds''] [[-linewidth ''N''] |
|
|
26 |
[[-min_circles ''N''] [[-max_circles ''N''] [[-min_speed |
|
|
27 |
''number''] [[-max_speed ''number''] [[-harmonics |
|
|
28 |
''N''] [[-timestep ''number''] [[-divisor_poisson |
|
|
29 |
''probability''] [[-size_factor_min ''number''] |
|
|
30 |
[[-size_factor_max ''number''] |
|
|
31 |
!!DESCRIPTION |
|
|
32 |
|
|
|
33 |
|
|
|
34 |
The epicycle program draws the path traced out by a point on |
|
|
35 |
the edge of a circle. That circle rotates around a point on |
|
|
36 |
the rim of another circle, and so on, several times. The |
|
|
37 |
random curves produced can be simple or complex, convex or |
|
|
38 |
concave, but they are always closed curves (they never go in |
|
|
39 |
indefinitely). |
|
|
40 |
|
|
|
41 |
|
|
|
42 |
You can configure both the way the curves are drawn and the |
|
|
43 |
way in which the random sequence of circles is generated, |
|
|
44 |
either with command-line options or X |
|
|
45 |
resources. |
|
|
46 |
!!OPTIONS |
|
|
47 |
|
|
|
48 |
|
|
|
49 |
__-display__ ''host:display.screen'' |
|
|
50 |
|
|
|
51 |
|
|
|
52 |
Specifies which X display we should use (see the section |
4 |
perry |
53 |
DISPLAY NAMES in X(1) for more information about this |
1 |
perry |
54 |
option). |
|
|
55 |
|
|
|
56 |
|
|
|
57 |
__-root__ |
|
|
58 |
|
|
|
59 |
|
|
|
60 |
Draw on the root window. |
|
|
61 |
|
|
|
62 |
|
|
|
63 |
__-window__ |
|
|
64 |
|
|
|
65 |
|
|
|
66 |
Draw on a newly-created window. This is the |
|
|
67 |
default. |
|
|
68 |
|
|
|
69 |
|
|
|
70 |
__-mono__ |
|
|
71 |
|
|
|
72 |
|
|
|
73 |
If on a color display, pretend we're on a monochrome |
|
|
74 |
display. If we're on a mono display, we have no |
|
|
75 |
choice. |
|
|
76 |
|
|
|
77 |
|
|
|
78 |
__-install__ |
|
|
79 |
|
|
|
80 |
|
|
|
81 |
Install a private colormap for the window. |
|
|
82 |
|
|
|
83 |
|
|
|
84 |
__-noinstall__ |
|
|
85 |
|
|
|
86 |
|
|
|
87 |
Don't install a private colormap for the |
|
|
88 |
window. |
|
|
89 |
|
|
|
90 |
|
|
|
91 |
__-visual__ ''viz'' |
|
|
92 |
|
|
|
93 |
|
|
|
94 |
Specify which visual to use. Legal values are the name of a |
|
|
95 |
visual class, or the id number (decimal or hex) of a |
|
|
96 |
specific visual. Possible choices include |
|
|
97 |
|
|
|
98 |
|
|
|
99 |
default, best, mono, monochrome, gray, grey, color, |
|
|
100 |
staticgray, staticcolor, truecolor, grayscale, greyscale, |
|
|
101 |
pseudocolor, directcolor, ''number'' |
|
|
102 |
|
|
|
103 |
|
|
|
104 |
If a decimal or hexadecimal number is used, |
|
|
105 |
__XGetVisualInfo__(3X) is consulted to obtain the |
|
|
106 |
required visual. |
|
|
107 |
|
|
|
108 |
|
|
|
109 |
__-colors__ ''N'' |
|
|
110 |
|
|
|
111 |
|
|
|
112 |
How many colors should be used (if possible). The colors are |
|
|
113 |
chosen randomly. |
|
|
114 |
|
|
|
115 |
|
|
|
116 |
__-foreground__ ''name'' |
|
|
117 |
|
|
|
118 |
|
|
|
119 |
With __-mono__, this option selects the foreground |
|
|
120 |
colour. |
|
|
121 |
|
|
|
122 |
|
|
|
123 |
__-delay__ ''microseconds'' |
|
|
124 |
|
|
|
125 |
|
|
|
126 |
Specifies the delay between drawing successive line segments |
|
|
127 |
of the path. If you do not specify __-sync__, some X |
|
|
128 |
servers may batch up several drawing operations together, |
|
|
129 |
producing a less smooth effect. This is more likely to |
|
|
130 |
happen in monochrome mode (on monochrome servers or when |
|
|
131 |
__-mono__ is specified). |
|
|
132 |
|
|
|
133 |
|
|
|
134 |
__-holdtime__ ''seconds'' |
|
|
135 |
|
|
|
136 |
|
|
|
137 |
When the figure is complete, ''epicycle'' pauses this |
|
|
138 |
number of seconds. |
|
|
139 |
|
|
|
140 |
|
|
|
141 |
__-linewidth__ ''N'' |
|
|
142 |
|
|
|
143 |
|
|
|
144 |
Width in pixels of the body's track. Specifying values |
|
|
145 |
greater than one may cause slower drawing. The fastest value |
|
|
146 |
is usually zero, meaning one pixel. |
|
|
147 |
|
|
|
148 |
|
|
|
149 |
__-min_circles__ ''N'' |
|
|
150 |
|
|
|
151 |
|
|
|
152 |
Smallest number of epicycles in the figure. |
|
|
153 |
|
|
|
154 |
|
|
|
155 |
__-max_circles__ ''N'' |
|
|
156 |
|
|
|
157 |
|
|
|
158 |
Largest number of epicycles in the figure. |
|
|
159 |
|
|
|
160 |
|
|
|
161 |
__-min_speed__ ''number'' |
|
|
162 |
|
|
|
163 |
|
|
|
164 |
Smallest possible value for the base speed of revolution of |
|
|
165 |
the epicycles. The actual speeds of the epicycles vary from |
|
|
166 |
this down to ''min_speed / |
|
|
167 |
harmonics''__.__ |
|
|
168 |
|
|
|
169 |
|
|
|
170 |
__-max_speed__ ''number'' |
|
|
171 |
|
|
|
172 |
|
|
|
173 |
Smallest possible value for the base speed of revolution of |
|
|
174 |
the epicycles. |
|
|
175 |
|
|
|
176 |
|
|
|
177 |
__-harmonics__ ''N'' |
|
|
178 |
|
|
|
179 |
|
|
|
180 |
Number of possible harmonics; the larger this value is, the |
|
|
181 |
greater the possible variety of possible speeds of |
|
|
182 |
epicycle. |
|
|
183 |
|
|
|
184 |
|
|
|
185 |
__-timestep__ ''number'' |
|
|
186 |
|
|
|
187 |
|
|
|
188 |
Decreasing this value will reduce the distance the body |
|
|
189 |
moves for each line segment, possibly producing a smoother |
|
|
190 |
figure. Increasing it may produce faster |
|
|
191 |
results. |
|
|
192 |
|
|
|
193 |
|
|
|
194 |
__-divisor_poisson__ ''probability'' |
|
|
195 |
|
|
|
196 |
|
|
|
197 |
Each epicycle rotates at a rate which is a factor of the |
|
|
198 |
base speed. The speed of each epicycle is the base speed |
|
|
199 |
divided by some integer between 1 and the value of the |
|
|
200 |
__-harmonics__ option. This integer is decided by |
|
|
201 |
starting at 1 and tossing a biased coin. For each |
|
|
202 |
consecutive head, the value is incremented by one. The |
|
|
203 |
integer will not be incremented above the value of the |
|
|
204 |
__-harmonics__ option. The argument of this option |
|
|
205 |
decides the bias of the coin; it is the probability that |
|
|
206 |
that coin will produce a head at any given |
|
|
207 |
toss. |
|
|
208 |
|
|
|
209 |
|
|
|
210 |
__-size_factor_min__ ''number'' |
|
|
211 |
|
|
|
212 |
|
|
|
213 |
Epicycles are always at least this factor smaller than their |
|
|
214 |
parents. |
|
|
215 |
|
|
|
216 |
|
|
|
217 |
__-size_factor_max__ ''number'' |
|
|
218 |
|
|
|
219 |
|
|
|
220 |
Epicycles are never more than this factor smaller than their |
|
|
221 |
parents. |
|
|
222 |
!!RESOURCES |
|
|
223 |
|
|
|
224 |
|
|
|
225 |
Option Resource Default Value |
|
|
226 |
------ -------- ------------- |
|
|
227 |
-colors .colors 100 |
|
|
228 |
-delay .delay 1000 |
|
|
229 |
-holdtime .holdtime 2 |
|
|
230 |
-linewidth .lineWidth 4 |
|
|
231 |
-min_circles .minCircles 2 |
|
|
232 |
-max_circles .maxCircles 10 |
|
|
233 |
-min_speed .minSpeed 0.003 |
|
|
234 |
-max_speed .maxSpeed 0.005 |
|
|
235 |
-harmonics .harmonics 8 |
|
|
236 |
-timestep .timestep 1.0 |
|
|
237 |
-divisor_poisson .divisorPoisson 0.4 |
|
|
238 |
-size_factor_min .sizeFactorMin 1.05 |
|
|
239 |
-size_factor_max .sizeFactorMax 2.05 |
|
|
240 |
.timestepCoarseFactor 1.0 |
|
|
241 |
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. |
|
|
242 |
!!USER INTERFACE |
|
|
243 |
|
|
|
244 |
|
|
|
245 |
The program runs mostly without user interaction. When |
|
|
246 |
running on the root window, no input is accepted. When |
|
|
247 |
running in its own window, the program will exit if mouse |
|
|
248 |
button 3 is pressed. If any other mouse button is pressed, |
|
|
249 |
the current figure will be abandoned and another will be |
|
|
250 |
started. |
|
|
251 |
!!HISTORY |
|
|
252 |
|
|
|
253 |
|
|
|
254 |
The geometry of epicycles was perfected by Hipparchus of |
|
|
255 |
Rhodes at some time around 125 B.C., 185 years after the |
|
|
256 |
birth of Aristarchus of Samos, the inventor of the |
|
|
257 |
heliocentric universe model. Hipparchus applied epicycles to |
|
|
258 |
the Sun and the Moon. Ptolemy of Alexandria went on to apply |
|
|
259 |
them to what was then the known universe, at around 150 A.D. |
|
|
260 |
Copernicus went on to apply them to the heliocentric model |
|
|
261 |
at the beginning of the sixteenth century. Johannes Kepler |
|
|
262 |
discovered that the planets actually move in elliptical |
|
|
263 |
orbits in about 1602. The inverse-square law of gravity was |
|
|
264 |
suggested by Boulliau in 1645. Isaac Newton's ''Principia |
|
|
265 |
Mathematica'' was published in 1687, and proved that |
|
|
266 |
Kepler's laws derived from Newtonian |
|
|
267 |
gravitation. |
|
|
268 |
!!BUGS |
|
|
269 |
|
|
|
270 |
|
|
|
271 |
The colour selection is re-done for every figure. This may |
|
|
272 |
generate too much network traffic for this program to work |
|
|
273 |
well over slow or long links. |
|
|
274 |
!!COPYRIGHT |
|
|
275 |
|
|
|
276 |
|
|
|
277 |
Copyright 1998, James Youngman. Permission to use, copy, |
|
|
278 |
modify, distribute, and sell this software and its |
|
|
279 |
documentation for any purpose is hereby granted without fee, |
|
|
280 |
provided that the above copyright notice appear in all |
|
|
281 |
copies and that both that copyright notice and this |
|
|
282 |
permission notice appear in supporting documentation. No |
|
|
283 |
representations are made about the suitability of this |
|
|
284 |
software for any purpose. It is provided |
|
|
285 |
!!AUTHOR |
|
|
286 |
|
|
|
287 |
|
|
|
288 |
James Youngman |
|
|
289 |
---- |