<?xml version="1.0" encoding="UTF-8"?>

<screensaver name="hopffibration" _label="Hopf Fibration" gl="yes">

  <video href="https://www.youtube.com/watch?v=75TQ0CjxRfY"/>

  <command arg="--root"/>

  <hgroup>

    <vgroup>
     <boolean id="shadows" _label="Display shadows" arg-unset="--no-shadows"/>

     <boolean id="basespace" _label="Display the base space" arg-unset="--no-base-space"/>

     <boolean id="antialiasing" _label="Use anti-aliasing" arg-unset="--no-anti-aliasing"/>
    </vgroup>

    <vgroup>
      <hgroup>
        <select id="details">
          <option id="coarse" _label="Coarse" arg-set="--details coarse"/>
          <option id="medium" _label="Medium"/>
          <option id="fine"   _label="Fine"   arg-set="--details fine"/>
        </select>

        <select id="projection">
         <option id="perspective" _label="Perspective"/>
         <option id="orthographic" _label="Orthographic"
                 arg-set="--orthographic"/>
        </select>
      </hgroup>

      <hgroup>
        <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>

        <number id="delay" type="slider" arg="--delay %"
                _label="Frame rate" _low-label="Low" _high-label="High"
                low="0" high="100000" default="20000"
                convert="invert"/>
      </hgroup>
      <xscreensaver-updater />

    </vgroup>
  </hgroup>

  <_description>
The Hopf fibration of the 4d hypersphere S³.

The Hopf fibration is based on the Hopf map, a many-to-one continuous
function from S³ onto the the ordinary 3d sphere S² such that each
distinct point of S² is mapped from a distinct great circle of S³.
Hence, the inverse image of a point on S² corresponds to a great
circle S¹ on S³. The sphere S² is called the base space, each S¹
corresponding to a point on S² is called a fiber, and S³ is called the
total space. The program displays various configurations of points on
the base space and their fibers in the total space. The corresponding
points and fibers are displayed in the same color.

Any two fibers form a Hopf link. Each circle on S² creates a set of
fibers that forms a Clifford torus on S³ (i.e., in 4d). Clifford tori
are flat (in the same sense that the surface of a cylinder is
flat). More generally, any closed curve on S² creates a torus-like
surface on S³ that is flat. These surfaces are called Hopf tori or
Bianchi-Pinkall flat tori. Look for the wave-like curve on S² in the
animations to see a Hopf torus. A circular arc on S² creates a Hopf
band on S³. The Hopf band is a Seifert surface of the Hopf link that
forms the boundaries of the Hopf band.

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

https://en.wikipedia.org/wiki/Hopf_fibration
https://en.wikipedia.org/wiki/Hopf_link
https://en.wikipedia.org/wiki/Clifford_torus
https://en.wikipedia.org/wiki/Seifert_surface
https://en.wikipedia.org/wiki/Dupin_cyclide
https://en.wikipedia.org/wiki/3-sphere

Written by Carsten Steger; 2025.
  </_description>
</screensaver>
