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