Provided by:
xscreensaver-gl-extra_5.14-1ubuntu1_i386 
NAME
kleinbottle - Draws a 4d Klein bottle.
SYNOPSIS
kleinbottle [-display host:display.screen] [-install] [-visual visual]
[-window] [-root] [-delay usecs] [-fps] [-klein-bottle bottle-name]
[-figure-8] [-lawson] [-mode display-mode] [-wireframe] [-surface]
[-transparent] [-appearance appearance] [-solid] [-bands] [-colors
color-scheme] [-twosided] [-rainbow] [-depth] [-view-mode view-mode]
[-walk] [-turn] [-walk-turn] [-orientation-marks] [-projection-3d mode]
[-perspective-3d] [-orthographic-3d] [-projection-4d mode]
[-perspective-4d] [-orthographic-4d] [-speed-wx float] [-speed-wy
float] [-speed-wz float] [-speed-xy float] [-speed-xz float] [-speed-yz
float] [-walk-direction float] [-walk-speed float]
DESCRIPTION
The kleinbottle program shows two different Klein bottles in 4d: the
figure-8 Klein bottle or the Lawson Klein bottle. You can walk on the
Klein bottle, see it turn in 4d, or walk on it while it turns in 4d.
The figure-8 Klein bottle is well known in its 3d form. The 4d form
used in this program is an extension of the 3d form to 4d that does not
intersect itself in 4d (which can be seen in the depth colors mode).
The Lawson Klein bottle, on the other hand, does intersect itself in
4d. Its primary use is that it has a nice appearance for walking and
for turning in 3d. The Klein bottle is a non-orientable surface. To
make this apparent, the two-sided color mode can be used.
Alternatively, orientation markers (curling arrows) can be drawn as a
texture map on the surface of the Klein bottle. While walking on the
Klein bottle, you will notice that the orientation of the curling
arrows changes (which it must because the Klein bottle is non-
orientable). The program projects the 4d Klein bottle to 3d using
either a perspective or an orthographic projection. Which of the two
alternatives looks more appealing depends on the viewing mode and the
Klein bottle. For example, the Lawson Klein bottle looks nicest when
projected perspectively. The figure-8 Klein bottle, on the other hand,
looks nicer while walking when projected orthographically from 4d. The
projected Klein bottle can then be projected to the screen either
perspectively or orthographically. When using the walking modes,
perspective projection to the screen should be used. There are three
display modes for the Klein bottle: mesh (wireframe), solid, or
transparent. Furthermore, the appearance of the Klein bottle can be as
a solid object or as a set of see-through bands. Finally, the colors
with with the Klein bottle is drawn can be set to two-sided, rainbow,
or depth. In the first case, the Klein bottle is drawn with red on one
"side" and green on the "other side". Of course, the Klein bottle only
has one side, so the color jumps from red to green along a curve on the
surface of the Klein bottle. This mode enables you to see that the
Klein bottle is non-orientable. The second mode draws the Klein bottle
with fully saturated rainbow colors. This gives a very nice effect
when combined with the see-through bands mode or with the orientation
markers drawn. The third mode draws the Klein bottle with colors that
are chosen according to the 4d "depth" of the points. This mode
enables you to see that the figure-8 Klein bottle does not intersect
itself in 4d, while the Lawson Klein bottle does intersect itself. The
rotation speed for each of the six planes around which the Klein bottle
rotates can be chosen. For the walk-and-turn more, only the rotation
speeds around the true 4d planes are used (the xy, xz, and yz planes).
Furthermore, in the walking modes the walking direction in the 2d base
square of the Klein bottle and the walking speed can be chosen. This
program is somewhat inspired by Thomas Banchoff's book "Beyond the
Third Dimension: Geometry, Computer Graphics, and Higher Dimensions",
Scientific American Library, 1990.
OPTIONS
kleinbottle accepts the following options:
-window Draw on a newly-created window. This is the default.
-root Draw on the root window.
-install
Install a private colormap for the window.
-visual visual
Specify which visual to use. Legal values are the name of a
visual class, or the id number (decimal or hex) of a specific
visual.
-delay microseconds
How much of a delay should be introduced between steps of the
animation. Default 10000, or 1/100th second.
-fps Display the current frame rate, CPU load, and polygon count.
The following three options are mutually exclusive. They determine
which Klein bottle is displayed.
-klein-bottle random
Display a random Klein bottle (default).
-klein-bottle figure-8 (Shortcut: -figure-8)
Display the figure-8 Klein bottle.
-klein-bottle lawson (Shortcut: -lawson)
Display the Lawson Klein bottle.
The following four options are mutually exclusive. They determine how
the Klein bottle is displayed.
-mode random
Display the Klein bottle in a random display mode (default).
-mode wireframe (Shortcut: -wireframe)
Display the Klein bottle as a wireframe mesh.
-mode surface (Shortcut: -surface)
Display the Klein bottle as a solid surface.
-mode transparent (Shortcut: -transparent)
Display the Klein bottle as a transparent surface.
The following three options are mutually exclusive. They determine the
appearance of the Klein bottle.
-appearance random
Display the Klein bottle with a random appearance (default).
-appearance solid (Shortcut: -solid)
Display the Klein bottle as a solid object.
-appearance bands (Shortcut: -bands)
Display the Klein bottle as see-through bands.
The following four options are mutually exclusive. They determine how
to color the Klein bottle.
-colors random
Display the Klein bottle with a random color scheme (default).
-colors twosided (Shortcut: -twosided)
Display the Klein bottle with two colors: red on one "side" and
green on the "other side".
-colors rainbow (Shortcut: -rainbow)
Display the Klein bottle with fully saturated rainbow colors.
If the Klein bottle is displayed as see-through bands, each
band will be displayed with a different color.
-colors depth (Shortcut: -depth)
Display the Klein bottle with colors chosen depending on the 4d
"depth" of the points.
The following four options are mutually exclusive. They determine how
to view the Klein bottle.
-view-mode random
View the Klein bottle in a random view mode (default).
-view-mode walk (Shortcut: -walk)
View the Klein bottle as if walking on its surface.
-view-mode turn (Shortcut: -turn)
View the Klein bottle while it turns in 4d.
-view-mode walk-turn (Shortcut: -walk-turn)
View the Klein bottle as if walking on its surface.
Additionally, the Klein bottle turns around the true 4d planes
(the xy, xz, and yz planes).
The following options determine whether orientation marks are shown on
the Klein bottle.
-orientation-marks
Display orientation marks on the Klein bottle.
-no-orientation-marks
Don't display orientation marks on the Klein bottle (default).
The following three options are mutually exclusive. They determine how
the Klein bottle is projected from 3d to 2d (i.e., to the screen).
-projection-3d random
Project the Klein bottle from 3d to 2d using a random
projection mode (default).
-projection-3d perspective (Shortcut: -perspective-3d)
Project the Klein bottle from 3d to 2d using a perspective
projection.
-projection-3d orthographic (Shortcut: -orthographic-3d)
Project the Klein bottle from 3d to 2d using an orthographic
projection.
The following three options are mutually exclusive. They determine how
the Klein bottle is projected from 4d to 3d.
-projection-4d random
Project the Klein bottle from 4d to 3d using a random
projection mode (default).
-projection-4d perspective (Shortcut: -perspective-4d)
Project the Klein bottle from 4d to 3d using a perspective
projection.
-projection-4d orthographic (Shortcut: -orthographic-4d)
Project the Klein bottle from 4d to 3d using an orthographic
projection.
The following six options determine the rotation speed of the Klein
bottle around the six possible hyperplanes. The rotation speed is
measured in degrees per frame. The speeds should be set to relatively
small values, e.g., less than 4 in magnitude. In walk mode, all speeds
are ignored. In walk-and-turn mode, the 3d rotation speeds are ignored
(i.e., the wx, wy, and wz speeds). In walk-and-turn mode, smaller
speeds must be used than in the turn mode to achieve a nice
visualization. Therefore, in walk-and-turn mode the speeds you have
selected are divided by 5 internally.
-speed-wx float
Rotation speed around the wx plane (default: 1.1).
-speed-wy float
Rotation speed around the wy plane (default: 1.3).
-speed-wz float
Rotation speed around the wz plane (default: 1.5).
-speed-xy float
Rotation speed around the xy plane (default: 1.7).
-speed-xz float
Rotation speed around the xz plane (default: 1.9).
-speed-yz float
Rotation speed around the yz plane (default: 2.1).
The following two options determine the walking speed and direction.
-walk-direction float
The walking direction is measured as an angle in degrees in the
2d square that forms the coordinate system of the surface of
the Klein bottle (default: 7.0).
-walk-speed float
The walking speed is measured in percent of some sensible
maximum speed (default: 20.0).
INTERACTION
If you run this program in standalone mode in its turn mode, you can
rotate the Klein bottle by dragging the mouse while pressing the left
mouse button. This rotates the Klein bottle in 3D, i.e., around the
wx, wy, and wz planes. If you press the shift key while dragging the
mouse with the left button pressed the Klein bottle is rotated in 4D,
i.e., around the xy, xz, and yz planes. To examine the Klein bottle at
your leisure, it is best to set all speeds to 0. Otherwise, the Klein
bottle will rotate while the left mouse button is not pressed. This
kind of interaction is not available in the two walk modes.
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 the RESOURCE_MANAGER property.
SEE ALSO
X(1), xscreensaver(1)
COPYRIGHT
Copyright (C) 2005-2009 by Carsten Steger. 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
Carsten Steger <carsten@mirsanmir.org>, 03-aug-2009.