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 © 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.