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 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 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 two-sided, distance, or direction. 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.

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.