The hypertorus is parametrized as the extrusion of a torus along a circular path in 4D. If the torus is rotated as it is extruded then twists are added to the extruded hyper-toroidal shape. Much the same way that adding a twist changes a cylinder into an nonorientable Möbius band, a twisted hypertorus can similarly have non-trivial topology.

Initialization code

These are some custom functions are defined which produce the graphic elements used throughout this article.

makeHypertorusGraphics


makeCoordinateGridGraphics

In[]:=
ClearAll[makeCoordinateGridGraphics];​​Options[makeCoordinateGridGraphics]={​​};​​makeCoordinateGridGraphics[]:=​​Module[{rangeX=Range[-20,20]*2,rangeY=Range[-20,20]*2},​​{Table[Line[{{x,First[rangeY],0},{x,Last[rangeY],0}}],{x,rangeX}],Table[Line[{{First[rangeX],y,0},{Last[rangeX],y,0}}],{y,rangeY}]}​​]

makeTwistedHypertorusGraphics


cubicSigmoid

In[]:=
cubicSigmoid[a_,b_][x_]:=3
2
Clip
-a+x
-a+b
,{0,1}
-2
3
Clip
-a+x
-a+b
,{0,1}
;

Manipulate: Twisted Hypertorus

Add twists to the hypertorus, move and rotate it in 4D and observe the hypershape’s intersection with the {w=0} 3D hyperplane:
In[]:=
Manipulate[​​{innerTorusGfx,outerTorusGfx,sliceGfx}=​​makeTwistedHypertorusGraphics[​​"Radius1"->2,​​"Radius2"->7,​​"Radius3"->15,​​"Twist1"->twist1,​​"Twist2"->twist2,​​"Twist3"->twist3,​​"SliceValues"->{0},​​"SliceDivisions"->{8,16,32},​​"InnerDivisions"->32,​​"OuterDivisions"->32,​​"RotationMatrix"->RotationMatrix[N[rotateXW],{{1,0,0,0},{0,0,0,1}}].RotationMatrix[N[rotateYW],{{0,1,0,0},{0,0,0,1}}],​​"TranslationVector"->{0,0,0,translateW},​​"WProjectionVector"->{0,0,1}​​];​​​​Graphics3D[{Specularity[1,50],​​{Hue[0,.7,.7],EdgeForm[],sliceGfx},​​If[Positive[innerOpacity],{FaceForm[Opacity[innerOpacity,Gray]],EdgeForm[Opacity[innerOpacity]],innerTorusGfx}],​​If[Positive[outerOpacity],{FaceForm[],EdgeForm[Opacity[outerOpacity]],outerTorusGfx}],​​{FaceForm[],EdgeForm[Thick],If[Not[SameQ[sliceGfx,Null]],Apply[Cuboid,CoordinateBoundingBox[First[sliceGfx]]]]},​​{Opacity[.8],makeCoordinateGridGraphics[]}​​}​​,Boxed->False​​,PlotRange->40​​,ViewAngle->.4​​,ViewPoint->Normalize[{1,2,1}]*2​​,Lighting->"Neutral"​​,ImageSize->{400,400}​​]​​,{{twist1,0},0,3,.5}​​,{{twist2,0},0,3,.5}​​,{{twist3,0},0,3,.5}​​,Delimiter​​,{{translateW,0},-25,25}​​,{{rotateXW,0},0,2Pi}​​,{{rotateYW,0},0,Pi}​​,Delimiter​​,{{innerOpacity,.2},0,1}​​,{{outerOpacity,.3},0,1}​​,Delimiter​​,{innerTorusGfx,None}​​,{outerTorusGfx,None}​​,{sliceGfx,None}​​,ControlPlacement->Top​​,TrackedSymbols:>{translateW,twist1,twist2,twist3,rotateXW,rotateYW,innerOpacity,outerOpacity}​​,SaveDefinitions->True​​]
Out[]=
​
twist1
twist2
twist3
translateW
rotateXW
rotateYW
innerOpacity
outerOpacity

Twisted Hypertorus: Examples

Add twists to the hypertorus and takes its w-slices:
Out[]=
​
twists
w
In this orientation, the equatorial cross-section of the hypertorus is two disjoint and concentric tori.
After adding three half-twists, the cross-section becomes a trefoil knot:
Adding three half-twists along a different axis of rotation gives an equatorial slice which is a genus 7 surface:

Animations: Twisted Hypertorus

Here is an animation which explores the various slices of the hypertorus with 1.5 half-twists which contains an equatorial trefoil:
This animation shows multiple w-slices at once while the hypertorus is twisted and untwisted:

CITE THIS NOTEBOOK

Hypertorus with twists, visualizing more complicated hypershapes​
by Dugan Hammock​
Wolfram Community, STAFF PICKS, August 24, 2023
​https://community.wolfram.com/groups/-/m/t/2997777