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

NAME

       romanboy - Draws a 3d immersion of the real projective plane that smoothly deforms between
       the Roman surface and the Boy surface.

SYNOPSIS

       romanboy [--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]   [--change-colors]   [--view-mode   view-mode]
       [--walk]  [--turn] [--no-deform] [--deformation-speed float] [--initial-deformation float]
       [--roman]  [--boy]  [--surface-order  number]  [--orientation-marks]  [--projection  mode]
       [--perspective]  [--orthographic]  [--speed-x  float]  [--speed-y float] [--speed-z float]
       [--walk-direction float] [--walk-speed float]

DESCRIPTION

       The romanboy program shows a 3d immersion of  the  real  projective  plane  that  smoothly
       deforms  between  the  Roman  surface and the Boy surface.  You can walk on the projective
       plane or turn  in  3d.   The  smooth  deformation  (homotopy)  between  these  two  famous
       immersions of the real projective plane was constructed by François Apéry.

       The  real  projective  plane 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 projective plane.  While walking on the
       projective plane, you will notice that the  orientation  of  the  curling  arrows  changes
       (which it must because the projective plane is non-orientable).

       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, like
       all lines in the projective plane, is topologically a  circle.   Points  on  the  line  at
       infinity  are  also  used  to  model directions in projective geometry.  The origin can be
       visualized in different manners.  When using distance colors (and  using  static  colors),
       the  origin  is the point that is displayed as fully saturated red, which is easier to see
       as the center of the reddish area on the  projective  plane.   Alternatively,  when  using
       distance  bands,  the origin is the center of the only band that projects to a disk.  When
       using direction bands, the origin is the point where all direction  bands  collapse  to  a
       point.   Finally,  when  orientation markers are being displayed, the origin the the point
       where all orientation markers are compressed to a point.  The line at infinity can also be
       visualized  in  different ways.  When using distance colors (and using static colors), the
       line at infinity is the line that is displayed as fully saturated magenta.  When two-sided
       (and  static)  colors  are used, the line at infinity lies at the points where the red and
       green "sides" of the projective plane meet (of course, the real projective plane only  has
       one  side,  so  this  is  a  design  choice  of  the  visualization).  Alternatively, when
       orientation markers are being displayed, the line at  infinity  is  the  place  where  the
       orientation markers change their orientation.

       Note  that  when the projective plane is displayed with bands, the orientation markers are
       placed in the middle of the bands.  For distance bands, the bands are chosen in such a way
       that  the band at the origin is only half as wide as the remaining bands, which results in
       a disk being displayed at the origin that has the same diameter as  the  remaining  bands.
       This  choice, however, also implies that the band at infinity is half as wide as the other
       bands.  Since the projective plane is attached to itself (in a complicated fashion) at the
       line  at  infinity,  effectively  the  band  at infinity is again as wide as the remaining
       bands.  However, since the orientation markers are displayed in the middle of  the  bands,
       this  means  that  only one half of the orientation markers will be displayed twice at the
       line at infinity if distance bands are used.  If  direction  bands  are  used  or  if  the
       projective  plane  is  displayed as a solid surface, the orientation markers are displayed
       fully at the respective sides of the line at infinity.

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

       There are three display modes for  the  projective  plane:  mesh  (wireframe),  solid,  or
       transparent.  Furthermore, the appearance of the projective plane can be as a solid object
       or as a set of see-through bands.  The bands can be distance bands, i.e., bands  that  lie
       at  increasing  distances  from  the  origin,  or direction bands, i.e., bands that lie at
       increasing angles with respect to the origin.

       When the projective plane is displayed with direction bands, you will be able to see  that
       each  direction  band (modulo the "pinching" at the origin) is a Moebius strip, which also
       shows that the projective plane is non-orientable.

       Finally, the colors with with the projective plane is drawn can be set to one-sided,  two-
       sided,  distance, or direction.  In one-sided mode, the projective plane is drawn with the
       same color on both "sides."  In two-sided mode (using static colors), the projective plane
       is  drawn  with  red on one "side" and green on the "other side."  As described above, the
       projective plane only has one side, so the color jumps from red to green along the line at
       infinity.   This  mode enables you to see that the projective plane is non-orientable.  If
       changing colors are used in two-sided mode, changing complementary colors are used on  the
       respective  "sides."   In  distance  mode,  the  projective  plane is displayed with fully
       saturated colors that depend on the distance of the points on the projective plane to  the
       origin.   If  static  colors  are  used, the origin is displayed in red, while the line at
       infinity is displayed in magenta.  If the projective plane is displayed as distance bands,
       each  band  will  be  displayed with a different color.  In direction mode, the projective
       plane is displayed with fully saturated colors that depend on the angle of the  points  on
       the  projective  plane  with  respect to the origin.  Angles in opposite directions to the
       origin (e.g., 15 and 205  degrees)  are  displayed  in  the  same  color  since  they  are
       projectively  equivalent.   If  the projective plane is displayed as direction bands, each
       band will be displayed with a different color.

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

       Furthermore,  in  the  walking  mode  the  walking  direction in the 2d base square of the
       projective plane 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 of
       the projective plane.  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 from the origin to  the  line  at  infinity  and  back
       (analogous to a direction band).  Any other value results in a curved path from the origin
       to the line at infinity and back.

       By default, the immersion of the real projective plane smoothly deforms between the  Roman
       and Boy surfaces.  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.

       As a final option, it is  possible  to  display  generalized  versions  of  the  immersion
       discussed  above  by  specifying the order of the surface.  The default surface order of 3
       results in the immersion of the real projective described above.  The surface order can be
       chosen  between  2 and 9.  Odd surface orders result in generalized immersions of the real
       projective plane, while even numbers result in a immersion of a topological sphere  (which
       is  orientable).  The most interesting even case is a surface order of 2, which results in
       an immersion of the halfway model of  Morin's  sphere  eversion  (if  the  deformation  is
       switched off).

       This  program  is inspired by François Apéry's book "Models of the Real Projective Plane",
       Vieweg, 1987.

OPTIONS

       romanboy 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  projective
       plane is displayed.

       --mode random
               Display the projective plane in a random display mode (default).

       --mode wireframe (Shortcut: --wireframe)
               Display the projective plane as a wireframe mesh.

       --mode surface (Shortcut: --surface)
               Display the projective plane as a solid surface.

       --mode transparent (Shortcut: --transparent)
               Display the projective plane as a transparent surface.

       The  following  four options are mutually exclusive.  They determine the appearance of the
       projective plane.

       --appearance random
               Display the projective plane with a random appearance (default).

       --appearance solid (Shortcut: --solid)
               Display the projective plane as a solid object.

       --appearance distance-bands (Shortcut: --distance-bands)
               Display the projective plane as see-through bands that lie at increasing distances
               from the origin.

       --appearance direction-bands (Shortcut: --direction-bands)
               Display  the  projective  plane as see-through bands that lie at increasing angles
               with respect to the origin.

       The following four options are mutually  exclusive.   They  determine  how  to  color  the
       projective plane.

       --colors random
               Display the projective plane with a random color scheme (default).

       --colors onesided (Shortcut: --onesided-colors)
               Display the projective plane with a single color.

       --colors twosided (Shortcut: --twosided-colors)
               Display  the  projective  plane  with  two  colors:  one  color one "side" and the
               complementary color on the "other side."  For static colors, the  colors  are  red
               and  green.   Note  that the line at infinity lies at the points where the red and
               green "sides" of the projective plane meet, i.e., where  the  orientation  of  the
               projective plane reverses.

       --colors distance (Shortcut: --distance-colors)
               Display  the  projective  plane  with  fully  saturated  colors that depend on the
               distance of the points on the projective plane to the origin.  For static  colors,
               the  origin  is  displayed  in  red,  while  the  line at infinity is displayed in
               magenta.  If the projective plane is displayed as distance bands, each  band  will
               be displayed with a different color.

       --colors direction (Shortcut: --direction-colors)
               Display  the projective plane with fully saturated colors that depend on the angle
               of the points on the projective plane with  respect  to  the  origin.   Angles  in
               opposite  directions to the origin (e.g., 15 and 205 degrees) are displayed in the
               same color since they are projectively equivalent.  If  the  projective  plane  is
               displayed as direction bands, each band will be displayed with a different color.

       The  following  options  determine  whether  the colors with which the projective plane is
       displayed are static or are changing dynamically.

       --change-colors
               Change the colors with which the projective plane is displayed dynamically.

       --no-change-colors
               Use static colors to display the projective plane (default).

       The following three options are mutually  exclusive.   They  determine  how  to  view  the
       projective plane.

       --view-mode random
               View the projective plane in a random view mode (default).

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

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

       The following options determine whether the surface is being deformed.

       --deform
               Deform the surface smoothly between the Roman and Boy surfaces (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 1000.  A value of 0
               corresponds to the Roman surface, while a value of 1000  corresponds  to  the  Boy
               surface.  The default value is 1000.

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

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

       The following option determines the order of the surface to be displayed.

       --surface-order number
               The surface order can be set to values between 2 and 9 (default: 3).  As described
               above, odd surface orders result in generalized immersions of the real  projective
               plane, while even numbers result in a immersion of a topological sphere.

       The  following  options  determine  whether  orientation marks are shown on the projective
       plane.

       --orientation-marks
               Display orientation marks on the projective plane.

       --no-orientation-marks
               Don't display orientation marks on the projective plane (default).

       The following three options are mutually exclusive.  They  determine  how  the  projective
       plane is projected from 3d to 2d (i.e., to the screen).

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

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

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

       The following three options determine the rotation speed of the  projective  plane  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  projective  plane  (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 from the origin to the line at infinity and
               back (analogous to a direction band).  Any other value results in  a  curved  path
               from the origin to the line at infinity and back.

       --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 projective
       plane  by  dragging  the  mouse  while  pressing  the left mouse button.  This rotates the
       projective plane in 3d.  To examine the projective plane at your leisure, it  is  best  to
       set  all  speeds  to  0.  Otherwise, the projective plane 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 © 2013-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>, 06-jan-2020.