Provided by: xscreensaver-gl_5.34-2ubuntu1_amd64 bug

NAME

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

SYNOPSIS

       projectiveplane  [-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] [-twosided-colors] [-distance-colors] [-direction-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:  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 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, 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,  the  line  at infinity is the line that is displayed as fully saturated
       magenta.  When two-sided 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  two-sided,
       distance,  direction, or depth.  In two-sided mode, 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.   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.  The origin is displayed in red,  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 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.

       -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 twosided (Shortcut: -twosided-colors)
               Display the projective plane with two colors: red on one "side" and green  on  the
               "other side."  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.   The  origin  is
               displayed in red, 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  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.

SEE ALSO

       X(1), xscreensaver(1)

COPYRIGHT

       Copyright © 2005-2014 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>, 03-oct-2014.