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 disc. 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 disc 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 more, 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-jan-2014.