hopffibration - Man Page

Draws the Hopf fibration of the 4d hypersphere

Synopsis

hopffibration [--display host:display.screen] [--install] [--visual visual] [--window] [--root] [--window-id number] [--delay usecs] [--fps] [--shadows] [--details coarse | medium | fine] [--base-space] [--anti-aliasing] [--perspective] [--orthographic]

Description

The hopffibration program shows the Hopf fibration of the 4d hypersphere.  The Hopf fibration is based on the Hopf map, a many-to-one continuous function from the 4d hypersphere (the 3-sphere) onto the the ordinary 3d sphere (the 2-sphere) such that each distinct point of the 2-sphere is mapped from a distinct great circle (a 1-sphere) of the 3-sphere.  Hence, the inverse image of a point on the 2-sphere corresponds to a great circle on the 3-sphere.  The 2-sphere is called the base space, each circle corresponding to a point on the 2-sphere is called a fiber, and the 3-sphere is called the total space.

The program displays the base space (the 2-sphere) as a semi-transparent gray sphere in the bottom right corner of the display.  The points on the base space are displayed as small colored spheres.  The fibers in the total space are displayed in the same color as the corresponding points on the base space.

The fibers in the total space are projected from 4d to 3d using stereographic projection and then compressing the infinite 3d space to a finite 3d ball to display the fibers compactly.  All fibers except one fiber that passes through the north pole of the 3-sphere are thus projected to deformed circles in 3d.  The program displays these deformed circles as closed tubes (topological tori).  The single fiber that passes through the north pole of the 3-sphere is projected to an infinite line by the stereographic projection.  This line passes through infinity in 3d and therefore topologically is a circle. Compressing this infinite line to a finite ball maps it to a straight line segment.  The program displays this line segment as a cylinder. However, it should be thought of as a circle through infinity.

The fibers, base space, and base points are then projected to the screen either perspectively or orthographically.

The program displays various interesting configurations of base points and fibers.  Look out for the following configurations:

During the animations, two kinds of motions are used.  Usually, the points on the base space are moved or rotated to particular configurations.  This is apparent by the small spheres that represent the base points changing their position on the base space, which leads to a corresponding change of the configuration of the fibers.  The base space itself, however, is not moved or rotated, i.e., its orientation remains fixed.  Sometimes, only the projection of the fibers is rotated in 3d to show some interesting configurations more clearly, e.g., that a Hopf torus has a hole like a regular torus.  In this case, the base space also maintains its orientation in space. Since a rotation in 3d does not change the configuration of the fibers, in this kind of animation, the points on the base space also remain fixed.  Sometimes, both types of animations are combined, e.g., when the projection of one or more Clifford tori is rotated in 3d while the base points of the Clifford tori also rotate on the base space.  In this case, the base space will only show the movement of the base points on the base space and not the 3d rotation of the projection of the fibers.

To enhance the 3d depth impression, the program displays the shadows of the fibers and base points by default.  This is done by way of a two-pass rendering algorithm in which the geometry is rendered twice. Depending on the speed of the GPU, displaying shadows might slow down the rendering significantly.  If this is the case, the rendering of shadows can be switched off, saving one render pass and thus speeding up the rendering.

Some of the animations render complex geometries with a very large number of polygons. This can cause the rendering to become slow on some types of GPU.  To speed up the rendering process, the amount of details that are rendered can be controlled in three granularities (coarse, medium, and fine).  Devices with relatively small screens and relatively low-powered GPUs, such as phones or tablets, should typically select coarse details.  Standard GPUs should select medium details (the default).  High-powered GPUs on large screens may benefit from fine details.

By default, the base space and base points are displayed as described above.  If desired, the display of the base space and base points can be switched off so that only the fibers are displayed.

During the animation of the Hopf fibration, sometimes multiple fibers that are very close to each other are displayed.  This can create disturbing aliasing artifacts that are especially noticeable when the fibers are moving or turning slowly.  Therefore, by default, the rendering is performed using anti-aliasing.  This typically has a negligible effect on the rendering speed.  However, if shadows have already been switched off, coarse details have been selected, and the rendering is still slow, anti-aliasing also can be switched off to check whether it has a noticeable effect on the rendering speed.

This program was inspired by Niles Johnson's visualization of the Hopf fibration (https://nilesjohnson.net/hopf.html).

Options

hopffibration 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 20000, or 1/50th second.

The following options determine whether shadows are displayed.

--shadows

Display the fibers, base space, and base points with shadows (default).

--no-shadows

Display the fibers, base space, and base points without shadows.

The following three options are mutually exclusive.  They determine with what level of detail the fibers, base space, and base points are rendered.

--details coarse

Render the fibers, base space, and base points with a level of detail that is suitable for low-powered GPUs and small screens, e.g., phones or tablets.

--details medium

Render the fibers, base space, and base points with a level of detail that is suitable for regular GPUs (default).

--details fine

Render the fibers, base space, and base points with a level of detail that is suitable for high-powered GPUs and large screens.

The following options determine whether the base space and base points are displayed.

--base-space

Display the base space and base points (default).

--no-base-space

Do not display the base space and base points.

The following options determine whether anti-aliasing is used to display the fibers, base space, and base points.

--anti-aliasing

Display the fibers, base space, and base points with anti-aliasing (default).

--no-anti-aliasing

Display the fibers, base space, and base points without anti-aliasing.

The following two options are mutually exclusive.  They determine how the fibers, base space, and base points are projected from 3d to 2d (i.e., to the screen).

--perspective

Project the fibers, base space, and base points from 3d to 2d using a perspective projection (default).

--orthographic

Project the fibers, base space, and base points from 3d to 2d using a orthographic projection.

--fps

Display the current frame rate, CPU load, and polygon count.

Interaction

If you run this program in standalone mode, you can rotate the fibers by dragging the mouse while pressing the left mouse button.

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), hypertorus(1)

Further Information

Author

Carsten Steger <carsten@mirsanmir.org>, 06-feb-2025.

Info

6.10.1-1.fc43 (29-Apr-2025) X Version 11 XScreenSaver manual