Provided by: xscreensaver-gl-extra_6.08+dfsg1-1ubuntu3_amd64 bug

NAME

       klein - Draws a 4d Klein bottle.

SYNOPSIS

       klein  [--display  host:display.screen]  [--install] [--visual visual] [--window] [--root]
       [--window-id number] [--delay  usecs]  [--fps]  [--klein-bottle  bottle-name]  [-figure-8]
       [-pinched-torus] [-lawson] [--mode display-mode] [--wireframe] [--surface] [--transparent]
       [--appearance  appearance]  [--solid]  [--bands]  [--colors   color-scheme]   [--onesided]
       [--twosided]  [--rainbow]  [--depth]  [--change-colors]  [--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  klein  program  shows three different Klein bottles in 4d: the figure-8 Klein bottle,
       the pinched torus 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 when using static colors).  The pinched torus Klein bottle also  does  not  intersect
       itself  in  4d (which can be seen in the depth colors mode when using static colors).  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.   For the pinched torus Klein
       bottle, both projection modes give equally acceptable projections.

       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  one-sided,  two-sided,  rainbow, or depth.  In one-sided mode, the Klein
       bottle is drawn with the same color on both "sides."   In  two-sided  mode  (using  static
       colors),  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.  If  changing  colors  are  used  in  two-sided  mode,  changing
       complementary  colors  are  used on the respective "sides."  The rainbow color mode (using
       static colors) draws the Klein bottle with  a  color  wheel  of  fully  saturated  rainbow
       colors.   If  changing  colors are used, the color wheel's colors change dynamically.  The
       rainbow color mode gives a very nice effect when combined with the see-through bands  mode
       or  with  the orientation markers drawn.  The depth color mode draws the Klein bottle with
       colors that are chosen according to the 4d "depth" of the points.  If  static  colors  are
       used,  this  mode  enables you to see that the figure-8 and pinched torus Klein bottles do
       not intersect themselves 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 mode, 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

       klein accepts the following options:

       --window
               Draw on a newly-created window.  This is the default.

       --root  Draw on the root window.

       --window-id number
               Draw on the specified 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 pinched-torus (Shortcut: --pinched-torus)
               Display the pinched torus 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 five 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 one-sided (Shortcut: --onesided)
               Display the Klein bottle with a single color.

       --colors two-sided (Shortcut: --twosided)
               Display  the  Klein  bottle  with  two  colors:  one  color  one  "side"  and  the
               complementary  color  on  the "other side."  For static colors, the colors are red
               and green.

       --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  options  determine  whether  the  colors  with  which  the Klein bottle is
       displayed are static or are changing dynamically.

       --change-colors
               Change the colors with which the Klein bottle is displayed dynamically.

       --no-change-colors
               Use static colors to display the Klein bottle (default).

       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.

       XSCREENSAVER_WINDOW
               The window ID to use with --root.

SEE ALSO

       X(1), xscreensaver(1)

COPYRIGHT

       Copyright © 2005-2020 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>, 11-jan-2020.