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.