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

NAME

       projectiveplane - Draws a 4d embedding of the real projective plane.

SYNOPSIS

       projectiveplane  [--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] [--depth-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  projectiveplane  program  shows a 4d embedding of the real projective plane.  You can
       walk on the projective plane, see it turn in 4d, or walk on it while it turns in 4d.   The
       fact  that  the  surface is an embedding of the real projective plane in 4d can be seen in
       the depth colors mode (using static  colors):  set  all  rotation  speeds  to  0  and  the
       projection  mode to 4d orthographic projection.  In its default orientation, the embedding
       of the real projective plane will then project to the Roman surface, which has three lines
       of  self-intersection.   However, at the three lines of self-intersection the parts of the
       surface that intersect have different colors, i.e., different 4d depths.

       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  program  projects  the  4d  projective  plane  to 3d using either a perspective or an
       orthographic projection.  Which of the two alternatives looks more appealing is up to you.
       However, two famous surfaces are obtained if orthographic 4d projection is used: The Roman
       surface and the cross cap.  If the projective plane is rotated in 4d, the  result  of  the
       projection  for  certain  rotations  is  a Roman surface and for certain rotations it is a
       cross cap.  The easiest way to see this is to  set  all  rotation  speeds  to  0  and  the
       rotation  speed  around  the  yz  plane  to a value different from 0.  However, for any 4d
       rotation speeds, the projections will generally cycle between the Roman  surface  and  the
       cross  cap.   The  difference  is  where the origin and the line at infinity will lie with
       respect to the self-intersections in the projections to 3d.

       The projected projective plane can then 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,  direction,  or depth.  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.   Finally,  in  depth
       mode  the  projective  plane  is  displayed with colors chosen depending on the 4d "depth"
       (i.e., the w coordinate) of the points on the projective plane at its default  orientation
       in  4d.   As  discussed above, this mode enables you to see that the projective plane does
       not intersect itself in 4d.

       The rotation speed for each of the six planes around which the  projective  plane  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
       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.

       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

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

       --colors depth (Shortcut: --depth)
               Display the projective plane with colors chosen depending on the 4d "depth" (i.e.,
               the w coordinate) of the points on the projective plane at its default orientation
               in 4d.

       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 four 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 4d.

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

       --view-mode walk-turn (Shortcut: --walk-turn)
               View  the  projective  plane  as  if  walking  on  its surface.  Additionally, the
               projective plane turns around the true 4d planes (the xy, xz, and yz planes).

       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-3d random
               Project the projective plane  from  3d  to  2d  using  a  random  projection  mode
               (default).

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

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

       The  following  three  options  are mutually exclusive.  They determine how the projective
       plane is projected from 4d to 3d.

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

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

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

       The  following six options determine the rotation speed of the projective plane 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  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, 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 projective plane is rotated
       in 4D, i.e., around the xy, xz, and yz planes.  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 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 © 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.