From http://www.jwz.org/xscreensaver/xscreensaver-5.33.tar.gz
[xscreensaver] / hacks / glx / romanboy.man
1 .TH XScreenSaver 1 "" "X Version 11"
2 .SH NAME
3 romanboy - Draws a 3d immersion of the real projective plane that
4 smoothly deforms between the Roman surface and the Boy surface.
5 .SH SYNOPSIS
6 .B romanboy
7 [\-display \fIhost:display.screen\fP]
8 [\-install]
9 [\-visual \fIvisual\fP]
10 [\-window]
11 [\-root]
12 [\-delay \fIusecs\fP]
13 [\-fps]
14 [\-mode \fIdisplay-mode\fP]
15 [\-wireframe]
16 [\-surface]
17 [\-transparent]
18 [\-appearance \fIappearance\fP]
19 [\-solid]
20 [\-distance-bands]
21 [\-direction-bands]
22 [\-colors \fIcolor-scheme\fP]
23 [\-twosided-colors]
24 [\-distance-colors]
25 [\-direction-colors]
26 [\-view-mode \fIview-mode\fP]
27 [\-walk]
28 [\-turn]
29 [\-no-deform]
30 [\-deformation-speed \fIfloat\fP]
31 [\-initial-deformation \fIfloat\fP]
32 [\-roman]
33 [\-boy]
34 [\-surface-order \fInumber\fP]
35 [\-orientation-marks]
36 [\-projection \fImode\fP]
37 [\-perspective]
38 [\-orthographic]
39 [\-speed-x \fIfloat\fP]
40 [\-speed-y \fIfloat\fP]
41 [\-speed-z \fIfloat\fP]
42 [\-walk-direction \fIfloat\fP]
43 [\-walk-speed \fIfloat\fP]
44 .SH DESCRIPTION
45 The \fIromanboy\fP program shows a 3d immersion of the real projective
46 plane that smoothly deforms between the Roman surface and the Boy
47 surface.  You can walk on the projective plane or turn in 3d.  The
48 smooth deformation (homotopy) between these two famous immersions of
49 the real projective plane was constructed by François Apéry.
50 .PP
51 The real projective plane is a non-orientable surface.  To make this
52 apparent, the two-sided color mode can be used.  Alternatively,
53 orientation markers (curling arrows) can be drawn as a texture map on
54 the surface of the projective plane.  While walking on the projective
55 plane, you will notice that the orientation of the curling arrows
56 changes (which it must because the projective plane is
57 non-orientable).
58 .PP
59 The real projective plane is a model for the projective geometry in 2d
60 space.  One point can be singled out as the origin.  A line can be
61 singled out as the line at infinity, i.e., a line that lies at an
62 infinite distance to the origin.  The line at infinity is
63 topologically a circle.  Points on the line at infinity are also used
64 to model directions in projective geometry.  The origin can be
65 visualized in different manners.  When using distance colors, the
66 origin is the point that is displayed as fully saturated red, which is
67 easier to see as the center of the reddish area on the projective
68 plane.  Alternatively, when using distance bands, the origin is the
69 center of the only band that projects to a disk.  When using direction
70 bands, the origin is the point where all direction bands collapse to a
71 point.  Finally, when orientation markers are being displayed, the
72 origin the the point where all orientation markers are compressed to a
73 point.  The line at infinity can also be visualized in different ways.
74 When using distance colors, the line at infinity is the line that is
75 displayed as fully saturated magenta.  When two-sided colors are used,
76 the line at infinity lies at the points where the red and green
77 "sides" of the projective plane meet (of course, the real projective
78 plane only has one side, so this is a design choice of the
79 visualization).  Alternatively, when orientation markers are being
80 displayed, the line at infinity is the place where the orientation
81 markers change their orientation.
82 .PP
83 Note that when the projective plane is displayed with bands, the
84 orientation markers are placed in the middle of the bands.  For
85 distance bands, the bands are chosen in such a way that the band at
86 the origin is only half as wide as the remaining bands, which results
87 in a disk being displayed at the origin that has the same diameter as
88 the remaining bands.  This choice, however, also implies that the band
89 at infinity is half as wide as the other bands.  Since the projective
90 plane is attached to itself (in a complicated fashion) at the line at
91 infinity, effectively the band at infinity is again as wide as the
92 remaining bands.  However, since the orientation markers are displayed
93 in the middle of the bands, this means that only one half of the
94 orientation markers will be displayed twice at the line at infinity if
95 distance bands are used.  If direction bands are used or if the
96 projective plane is displayed as a solid surface, the orientation
97 markers are displayed fully at the respective sides of the line at
98 infinity.
99 .PP
100 The immersed projective plane can be projected to the screen either
101 perspectively or orthographically.  When using the walking modes,
102 perspective projection to the screen will be used.
103 .PP
104 There are three display modes for the projective plane: mesh
105 (wireframe), solid, or transparent.  Furthermore, the appearance of
106 the projective plane can be as a solid object or as a set of
107 see-through bands.  The bands can be distance bands, i.e., bands that
108 lie at increasing distances from the origin, or direction bands, i.e.,
109 bands that lie at increasing angles with respect to the origin.
110 .PP
111 When the projective plane is displayed with direction bands, you will
112 be able to see that each direction band (modulo the "pinching" at the
113 origin) is a Moebius strip, which also shows that the projective plane
114 is non-orientable.
115 .PP
116 Finally, the colors with with the projective plane is drawn can be set
117 to two-sided, distance, or direction.  In two-sided mode, the
118 projective plane is drawn with red on one "side" and green on the
119 "other side".  As described above, the projective plane only has one
120 side, so the color jumps from red to green along the line at infinity.
121 This mode enables you to see that the projective plane is
122 non-orientable.  In distance mode, the projective plane is displayed
123 with fully saturated colors that depend on the distance of the points
124 on the projective plane to the origin.  The origin is displayed in
125 red, the line at infinity is displayed in magenta.  If the projective
126 plane is displayed as distance bands, each band will be displayed with
127 a different color.  In direction mode, the projective plane is
128 displayed with fully saturated colors that depend on the angle of the
129 points on the projective plane with respect to the origin.  Angles in
130 opposite directions to the origin (e.g., 15 and 205 degrees) are
131 displayed in the same color since they are projectively equivalent.
132 If the projective plane is displayed as direction bands, each band
133 will be displayed with a different color.
134 .PP
135 The rotation speed for each of the three coordinate axes around which
136 the projective plane rotates can be chosen.
137 .PP
138 Furthermore, in the walking mode the walking direction in the 2d base
139 square of the projective plane and the walking speed can be chosen.
140 The walking direction is measured as an angle in degrees in the 2d
141 square that forms the coordinate system of the surface of the
142 projective plane.  A value of 0 or 180 means that the walk is along a
143 circle at a randomly chosen distance from the origin (parallel to a
144 distance band).  A value of 90 or 270 means that the walk is directly
145 from the origin to the line at infinity and back (analogous to a
146 direction band).  Any other value results in a curved path from the
147 origin to the line at infinity and back.
148 .PP
149 By default, the immersion of the real projective plane smoothly
150 deforms between the Roman and Boy surfaces.  It is possible to choose
151 the speed of the deformation.  Furthermore, it is possible to switch
152 the deformation off.  It is also possible to determine the initial
153 deformation of the immersion.  This is mostly useful if the
154 deformation is switched off, in which case it will determine the
155 appearance of the surface.
156 .PP
157 As a final option, it is possible to display generalized versions of
158 the immersion discussed above by specifying the order of the surface.
159 The default surface order of 3 results in the immersion of the real
160 projective described above.  The surface order can be chosen between 2
161 and 9.  Odd surface orders result in generalized immersions of the
162 real projective plane, while even numbers result in a immersion of a
163 topological sphere (which is orientable).  The most interesting even
164 case is a surface order of 2, which results in an immersion of the
165 halfway model of Morin's sphere eversion (if the deformation is
166 switched off).
167 .PP
168 This program is inspired by François Apéry's book "Models of the Real
169 Projective Plane", Vieweg, 1987.
170 .SH OPTIONS
171 .I romanboy
172 accepts the following options:
173 .TP 8
174 .B \-window
175 Draw on a newly-created window.  This is the default.
176 .TP 8
177 .B \-root
178 Draw on the root window.
179 .TP 8
180 .B \-install
181 Install a private colormap for the window.
182 .TP 8
183 .B \-visual \fIvisual\fP
184 Specify which visual to use.  Legal values are the name of a visual
185 class, or the id number (decimal or hex) of a specific visual.
186 .TP 8
187 .B \-delay \fImicroseconds\fP
188 How much of a delay should be introduced between steps of the
189 animation.  Default 10000, or 1/100th second.
190 .TP 8
191 .B \-fps
192 Display the current frame rate, CPU load, and polygon count.
193 .PP
194 The following four options are mutually exclusive.  They determine how
195 the projective plane is displayed.
196 .TP 8
197 .B \-mode random
198 Display the projective plane in a random display mode (default).
199 .TP 8
200 .B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP)
201 Display the projective plane as a wireframe mesh.
202 .TP 8
203 .B \-mode surface \fP(Shortcut: \fB\-surface\fP)
204 Display the projective plane as a solid surface.
205 .TP 8
206 .B \-mode transparent \fP(Shortcut: \fB\-transparent\fP)
207 Display the projective plane as a transparent surface.
208 .PP
209 The following four options are mutually exclusive.  They determine the
210 appearance of the projective plane.
211 .TP 8
212 .B \-appearance random
213 Display the projective plane with a random appearance (default).
214 .TP 8
215 .B \-appearance solid \fP(Shortcut: \fB\-solid\fP)
216 Display the projective plane as a solid object.
217 .TP 8
218 .B \-appearance distance-bands \fP(Shortcut: \fB\-distance-bands\fP)
219 Display the projective plane as see-through bands that lie at
220 increasing distances from the origin.
221 .PP
222 .TP 8
223 .B \-appearance direction-bands \fP(Shortcut: \fB\-direction-bands\fP)
224 Display the projective plane as see-through bands that lie at
225 increasing angles with respect to the origin.
226 .PP
227 The following four options are mutually exclusive.  They determine how
228 to color the projective plane.
229 .TP 8
230 .B \-colors random
231 Display the projective plane with a random color scheme (default).
232 .TP 8
233 .B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP)
234 Display the projective plane with two colors: red on one "side" and
235 green on the "other side."  Note that the line at infinity lies at the
236 points where the red and green "sides" of the projective plane meet,
237 i.e., where the orientation of the projective plane reverses.
238 .TP 8
239 .B \-colors distance \fP(Shortcut: \fB\-distance-colors\fP)
240 Display the projective plane with fully saturated colors that depend
241 on the distance of the points on the projective plane to the origin.
242 The origin is displayed in red, the line at infinity is displayed in
243 magenta.  If the projective plane is displayed as distance bands, each
244 band will be displayed with a different color.
245 .TP 8
246 .B \-colors direction \fP(Shortcut: \fB\-direction-colors\fP)
247 Display the projective plane with fully saturated colors that depend
248 on the angle of the points on the projective plane with respect to the
249 origin.  Angles in opposite directions to the origin (e.g., 15 and 205
250 degrees) are displayed in the same color since they are projectively
251 equivalent.  If the projective plane is displayed as direction bands,
252 each band will be displayed with a different color.
253 .PP
254 The following three options are mutually exclusive.  They determine
255 how to view the projective plane.
256 .TP 8
257 .B \-view-mode random
258 View the projective plane in a random view mode (default).
259 .TP 8
260 .B \-view-mode turn \fP(Shortcut: \fB\-turn\fP)
261 View the projective plane while it turns in 3d.
262 .TP 8
263 .B \-view-mode walk \fP(Shortcut: \fB\-walk\fP)
264 View the projective plane as if walking on its surface.
265 .PP
266 The following options determine whether the surface is being deformed.
267 .TP 8
268 .B \-deform
269 Deform the surface smoothly between the Roman and Boy surfaces
270 (default).
271 .TP 8
272 .B \-no-deform
273 Don't deform the surface.
274 .PP
275 The following option determines the deformation speed.
276 .TP 8
277 .B \-deformation-speed \fIfloat\fP
278 The deformation speed is measured in percent of some sensible maximum
279 speed (default: 10.0).
280 .PP
281 The following options determine the initial deformation of the
282 surface.  As described above, this is mostly useful if
283 \fB\-no-deform\fP is specified.
284 .TP 8
285 .B \-initial-deformation \fIfloat\fP
286 The initial deformation is specified as a number between 0 and 1000.
287 A value of 0 corresponds to the Roman surface, while a value of 1000
288 corresponds to the Boy surface.  The default value is 1000.
289 .TP 8
290 .B \-roman
291 This is a shortcut for \fB\-initial-deformation 0\fP.
292 .TP 8
293 .B \-boy
294 This is a shortcut for \fB\-initial-deformation 1000\fP.
295 .PP
296 The following option determines the order of the surface to be
297 displayed.
298 .TP 8
299 .B \-surface-order \fInumber\fP
300 The surface order can be set to values between 2 and 9 (default: 3).
301 As described above, odd surface orders result in generalized
302 immersions of the real projective plane, while even numbers result in
303 a immersion of a topological sphere.
304 .PP
305 The following options determine whether orientation marks are shown on
306 the projective plane.
307 .TP 8
308 .B \-orientation-marks
309 Display orientation marks on the projective plane.
310 .TP 8
311 .B \-no-orientation-marks
312 Don't display orientation marks on the projective plane (default).
313 .PP
314 The following three options are mutually exclusive.  They determine
315 how the projective plane is projected from 3d to 2d (i.e., to the
316 screen).
317 .TP 8
318 .B \-projection random
319 Project the projective plane from 3d to 2d using a random projection
320 mode (default).
321 .TP 8
322 .B \-projection perspective \fP(Shortcut: \fB\-perspective\fP)
323 Project the projective plane from 3d to 2d using a perspective
324 projection.
325 .TP 8
326 .B \-projection orthographic \fP(Shortcut: \fB\-orthographic\fP)
327 Project the projective plane from 3d to 2d using an orthographic
328 projection.
329 .PP
330 The following three options determine the rotation speed of the
331 projective plane around the three possible axes.  The rotation speed
332 is measured in degrees per frame.  The speeds should be set to
333 relatively small values, e.g., less than 4 in magnitude.  In walk
334 mode, all speeds are ignored.
335 .TP 8
336 .B \-speed-x \fIfloat\fP
337 Rotation speed around the x axis (default: 1.1).
338 .TP 8
339 .B \-speed-y \fIfloat\fP
340 Rotation speed around the y axis (default: 1.3).
341 .TP 8
342 .B \-speed-z \fIfloat\fP
343 Rotation speed around the z axis (default: 1.5).
344 .PP
345 The following two options determine the walking speed and direction.
346 .TP 8
347 .B \-walk-direction \fIfloat\fP
348 The walking direction is measured as an angle in degrees in the 2d
349 square that forms the coordinate system of the surface of the
350 projective plane (default: 83.0).  A value of 0 or 180 means that the
351 walk is along a circle at a randomly chosen distance from the origin
352 (parallel to a distance band).  A value of 90 or 270 means that the
353 walk is directly from the origin to the line at infinity and back
354 (analogous to a direction band).  Any other value results in a curved
355 path from the origin to the line at infinity and back.
356 .TP 8
357 .B \-walk-speed \fIfloat\fP
358 The walking speed is measured in percent of some sensible maximum
359 speed (default: 20.0).
360 .SH INTERACTION
361 If you run this program in standalone mode in its turn mode, you can
362 rotate the projective plane by dragging the mouse while pressing the
363 left mouse button.  This rotates the projective plane in 3d.  To
364 examine the projective plane at your leisure, it is best to set all
365 speeds to 0.  Otherwise, the projective plane will rotate while the
366 left mouse button is not pressed.  This kind of interaction is not
367 available in the walk mode.
368 .SH ENVIRONMENT
369 .PP
370 .TP 8
371 .B DISPLAY
372 to get the default host and display number.
373 .TP 8
374 .B XENVIRONMENT
375 to get the name of a resource file that overrides the global resources
376 stored in the RESOURCE_MANAGER property.
377 .SH SEE ALSO
378 .BR X (1),
379 .BR xscreensaver (1)
380 .SH COPYRIGHT
381 Copyright \(co 2013-2014 by Carsten Steger.  Permission to use, copy,
382 modify, distribute, and sell this software and its documentation for
383 any purpose is hereby granted without fee, provided that the above
384 copyright notice appear in all copies and that both that copyright
385 notice and this permission notice appear in supporting documentation.
386 No representations are made about the suitability of this software for
387 any purpose.  It is provided "as is" without express or implied
388 warranty.
389 .SH AUTHOR
390 Carsten Steger <carsten@mirsanmir.org>, 03-oct-2014.