It is. The picture illustrating the impending cusps is after the two sides of the circle have passed through each other.
Mechanically, you get this deformation by adding another parameter to the function between spaces. In Go-ish pseudo-code, say at each instant of time you have a function
// lon ranges from -180 to 180
// lat ranges from -90 to 90
func eversion_t(lon float, lat float) (x float, y float, z float) {
// return the xyz point corresponding to the lon/lat
}
which maps lon/lat points on the sphere to 3D space. Then the homotopy is a single function, parameterized by a t parameter // t ranges from 0 to 1 inclusive
// lon ranges from -180 to 180
// lat ranges from -90 to 90
func eversion(t float, lon float, lat float) (x float, y float, z float) {
// return the xyz point corresponding to the lat/lon at time t
// see https://arxiv.org/pdf/1711.10466.pdf for the implementation of this function
}
where this combined function is required to be continuous.By the way, the "push the ends of the sphere through each other" function is a perfectly valid homotopy. There's no topological way to talk about "creasing" -- you need derivatives for that. In particular, the eversion function is required to be an immersion (https://en.wikipedia.org/wiki/Immersion_(mathematics)) at each point in time, which is an additional constraint beyond just being a homotopy.
Packing a pop-up tent maybe? Always seems difficult enough..!
> Note that unlike physical objects, self-intersection is permitted.