Provided by: xscreensaver-gl_6.02+dfsg1-2ubuntu1_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]
       [-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.

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

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.