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

NAME

       etruscanvenus  -  Draws a 3d immersion of a Klein bottle that smoothly deforms between the
       Etruscan Venus surface, the Roman surface, the Boy surface surface, and the Ida surface.

SYNOPSIS

       etruscanvenus [--display host:display.screen]  [--install]  [--visual  visual]  [--window]
       [--root]  [--window-id number] [--delay usecs] [--fps] [--mode display-mode] [--wireframe]
       [--surface]  [--transparent]  [--appearance   appearance]   [--solid]   [--distance-bands]
       [--direction-bands]   [--colors   color-scheme]   [--onesided-colors]  [--twosided-colors]
       [--distance-colors]  [--direction-colors]  [--no-change-colors]  [--view-mode   view-mode]
       [--walk]  [--turn] [--no-deform] [--deformation-speed float] [--initial-deformation float]
       [--etruscan-venus] [--roman] [--boy]  [--ida]  [--orientation-marks]  [--projection  mode]
       [--perspective]  [--orthographic]  [--speed-x  float]  [--speed-y float] [--speed-z float]
       [--walk-direction float] [--walk-speed float]

DESCRIPTION

       The etruscanvenus program shows a 3d immersion of a Klein  bottle  that  smoothly  deforms
       between  the  Etruscan  Venus  surface,  the  Roman  surface, the Boy surface, and the Ida
       surface.  You can walk on the Klein bottle or turn it in 3d.  Topologically, all  surfaces
       are Klein bottles, even the Roman and Boy surfaces, which are doubly covered and therefore
       appear to be an immersed real projective plane.   The  smooth  deformation  between  these
       surfaces was constructed by George K. Francis.

       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).   Since  all  the surfaces except the Ida surface have
       points where the surface normal is not well defined  for  some  points,  walking  is  only
       performed on the Ida surface.

       As  mentioned above, the Roman and Boy surfaces are doubly covered and therefore appear to
       be an immersed real projective plane.  Since some of the parameter names are based on this
       interpretation  of  the surface, the geometry of the real projective plane will be briefly
       disussed.  The real projective plane is a model for the projective geometry in  2d  space.
       One  point  can  be  singled  out as the origin.  A line can be singled out as the line at
       infinity, i.e., a line that lies at an infinite distance  to  the  origin.   The  line  at
       infinity is topologically a circle.  Points on the line at infinity are also used to model
       directions  in  projective  geometry.   Direction  and  distance  bands  refer   to   this
       interpretation  of  the  surface.   If direction bands are used, the bands extend from the
       origin of the projective plane in different directions to the line at infinity and back to
       the  origin.   If  distance  bands  are  used,  the bands lie at constant distances to the
       origin.  The same interpretation is used for  distance  and  direction  colors.   Although
       there  is  no  conceptually  equivalent  geometric interpretation for the two Klein bottle
       surfaces (the Etruscan Venus  and  Ida  surfaces),  the  smooth  deformation  between  the
       surfaces results in a natural extension of these concepts to the Klein bottle surfaces.

       The   immersed   surfaces   can  be  projected  to  the  screen  either  perspectively  or
       orthographically.  When using the walking mode, perspective projection to the screen  will
       be used.

       There  are  three  display  modes  for  the  Klein  bottle:  mesh  (wireframe),  solid, or
       transparent.  Furthermore, the appearance of the surface can be as a solid object or as  a
       set  of  see-through  bands.   The  bands  can  be  distance  bands or direction bands, as
       explained above.

       The colors with with the surface is drawn can be set to one-sided, two-sided, distance, or
       direction.   In  one-sided mode, the surface is drawn with the same color on both sides of
       the underlying triangles.  In two-sided mode, the surface is drawn with one color  on  one
       side of the underlying triangles and the complementary color on the other side.  Since the
       surface actually only has one side, the color jumps from red to green along a line on  the
       surface.   This  mode  enables you to see that the surface is non-orientable.  In distance
       mode, the surface is displayed with fully saturated colors that depend on the distance  of
       the  points  on the projective plane to the origin, as described above.  If the surface is
       displayed as distance bands, each band will be  displayed  with  a  different  color.   In
       direction  mode,  the  surface is displayed with fully saturated colors that depend on the
       angle of the points on the projective plane with respect to the origin (see above  for  an
       explanation).  If the surface is displayed as direction bands, each band will be displayed
       with a different color.  The colors used to color the surface can either be static or  can
       be changed dynamically.

       The  rotation  speed  for  each of the three coordinate axes around which the Klein bottle
       rotates can be chosen.

       Furthermore, in the walking mode the walking direction  in  the  2d  base  square  of  the
       surface  and  the  walking  speed  can be chosen.  The walking direction is measured as an
       angle in degrees in the 2d square that forms the coordinate  system  of  the  surface.   A
       value of 0 or 180 means that the walk is along a circle at a randomly chosen distance from
       the origin (parallel to a distance band).  A value of 90 or 270 means  that  the  walk  is
       directly  along  a  direction  band.   Any  other value results in a curved path along the
       surface.  As noted above, walking is performed only on the Ida surface.

       By default, the immersion of the Klein bottle smoothly deforms between the Etruscan  Venus
       surface,  the  Roman  surface,  the  Boy  surface, and the Ida surface.  It is possible to
       choose the  speed  of  the  deformation.   Furthermore,  it  is  possible  to  switch  the
       deformation  off.   It  is  also  possible  to  determine  the  initial deformation of the
       immersion.  This is mostly useful if the deformation is switched off,  in  which  case  it
       will  determine  the  appearance of the surface.  A value of 0 corresponds to the Etruscan
       Venus surface, a value of 1000 to the Roman surface, a value of 2000 to the  Boy  surface,
       and a value of 3000 to the Ida surface.

       This  program  is  inspired  by  George  K.  Francis's  book  "A Topological Picturebook",
       Springer, 1987, by George K. Francis's paper "The Etruscan Venus" in P. Concus,  R.  Finn,
       and  D.  A.  Hoffman: "Geometric Analysis and Computer Graphics", Springer, 1991, and by a
       video entitled "The Etruscan Venus" by Donna J. Cox, George K.  Francis,  and  Raymond  L.
       Idaszak, presented at SIGGRAPH 1989.

OPTIONS

       etruscanvenus 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 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 four 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 distance-bands (Shortcut: --distance-bands)
               Display  the  Klein  bottle  as see-through bands that lie at increasing distances
               from the origin (see above for an explanation).

       --appearance direction-bands (Shortcut: --direction-bands)
               Display the Klein bottle as see-through bands that lie at increasing  angles  with
               respect to the origin (see above for an explanation).

       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 onesided (Shortcut: --onesided-colors)
               Display the Klein bottle with a single color.

       --colors twosided (Shortcut: --twosided-colors)
               Display the Klein bottle with  two  colors:  one  color  on  one  "side"  and  the
               complementary color on the "other side."

       --colors distance (Shortcut: --distance-colors)
               Display  the  Klein bottle with fully saturated colors that depend on the distance
               of  the  points  on  the  projective  plane  to  the  origin  (see  above  for  an
               explanation).   If the Klein bottle is displayed as distance bands, each band will
               be displayed with a different color.

       --colors direction (Shortcut: --direction-colors)
               Display the Klein bottle with fully saturated colors that depend on the  angle  of
               the  points  on  the projective plane with respect to the origin (see above for an
               explanation).  If the Klein bottle is displayed as direction bands, each band will
               be displayed with a different color.

       The  following  options  determine  whether  the  colors  with  which the Klein bottle are
       displayed are static or are changing dynamically.

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

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

       The following three 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).  The walking mode will be
               randomly selected in approximately 10% of the cases.

       --view-mode turn (Shortcut: --turn)
               View the Klein bottle while it turns in 3d.

       --view-mode walk (Shortcut: --walk)
               View the Klein bottle as if walking on its surface.

       The following options determine whether the surface is being deformed.

       --deform
               Deform the surface smoothly between the Etruscan Venus surface, the Roman surface,
               the Boy surface surface, and the Ida surface (default).

       --no-deform
               Don't deform the surface.

       The following option determines the deformation speed.

       --deformation-speed float
               The  deformation  speed  is  measured  in  percent  of some sensible maximum speed
               (default: 10.0).

       The following options determine the initial deformation  of  the  surface.   As  described
       above, this is mostly useful if --no-deform is specified.

       --initial-deformation float
               The initial deformation is specified as a number between 0 and 4000.  A value of 0
               corresponds to the Etruscan Venus surface, a value of 1000 to the Roman surface, a
               value  of  2000  to  the Boy surface, and a value of 3000 to the Ida surface.  The
               default value is 0.

       --etruscan-venus
               This is a shortcut for --initial-deformation 0.

       --roman This is a shortcut for --initial-deformation 1000.

       --boy   This is a shortcut for --initial-deformation 2000.

       --ida   This is a shortcut for --initial-deformation 3000.

       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  Klain  bottle
       is projected from 3d to 2d (i.e., to the screen).

       --projection random
               Project the Klein bottle from 3d to 2d using a random projection mode (default).

       --projection perspective (Shortcut: --perspective)
               Project the Klein bottle from 3d to 2d using a perspective projection.

       --projection orthographic (Shortcut: --orthographic)
               Project the Klein bottle from 3d to 2d using an orthographic projection.

       The  following  three  options determine the rotation speed of the Klein bottle around the
       three possible axes.  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.

       --speed-x float
               Rotation speed around the x axis (default: 1.1).

       --speed-y float
               Rotation speed around the y axis (default: 1.3).

       --speed-z float
               Rotation speed around the z axis (default: 1.5).

       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: 83.0).  A
               value of 0 or 180 means that the walk is along  a  circle  at  a  randomly  chosen
               distance  from  the  origin  (parallel  to a distance band).  A value of 90 or 270
               means that the walk is directly along a direction band.  Any other  value  results
               in  a curved path along the surface.  As noted above, walking is performed only on
               the Ida surface.

       --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.  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 walk mode.

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 © 2019-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>, 05-jan-2020.