ABSTRACT (original article): The oloid is defined as the convex hull of two unit circles in perpendicular planes, each passing through the center of the other. In this paper we derive an analytical expression for the moment of inertia tensor of an oloid with uniform density and confirm the result numerically. CITATION (original article): Sander G. Huisman (2026), The moment of inertia tensor of an oloid, arXiv:2603.15145. https://arxiv.org/abs/2603.15145
Geometry
Geometry
Let’s first define the geometry. We place two disks, mutually perpendicular, and a distance 1/2 from the origin away to get the following geometry:
$HistoryLength=1;n=100;fontsize=18;gc={-1.5,-1,-1};gnomon=ResourceFunction["Gnomon"][gc,"Colors"->{StandardRed,StandardGreen,StandardBlue},"AxesLength"->0.5,"OriginColor"->Black];gnomonlabel={Style[Text["x",gc+{1,0,0}0.6,{0,0}],fontsize,Black,FontFamily->"CMU Classical Serif"],Style[Text["y",gc+{0,1,0}0.7,{0,0}],fontsize,Black,FontFamily->"CMU Classical Serif"],Style[Text["z",gc+{0,0,1}0.65,{0,0}],fontsize,Black,FontFamily->"CMU Classical Serif"]};c1={-1/2,0,0};c2={1/2,0,0};cp1=Map[Append[0],CirclePoints[{0,0},1,n]]+Threaded[c1];cp2=MapApply[{#1,0,#2}&,CirclePoints[{0,0},1,n]]+Threaded[c2];angleoff=0.2;o1={#1,#2,0}&@@AngleVector[9Pi/8];o2={#1,0,#2}&@@AngleVector[Pi/4];gr2=Graphics3D{gnomon,gnomonlabel,EdgeForm[{Black,Thickness[0.003]}],StandardBlue,Polygon[cp1],StandardGreen,Polygon[cp2],Style[{Sphere[{#,0,0},0.05]&/@{-1/2,0,1/2}},(*Glow@*)Black],Style[{Arrow[Tube[{c1,c1+o1},0.025]],Arrow[Tube[{c2,c2+o2},0.025]]},Darker@StandardGray,Arrowheads[0.05]],Style[Text["O",{0,0,0},{2,-1.25}],fontsize,Black,FontFamily->"CMU Serif"],Style[Text["1",(c1+c1+o1)/2,{-1,1}],fontsize,Black,FontFamily->"CMU Serif"],Style[Text["1",(c2+c2+o2)/2,{2,-1}],fontsize,Black,FontFamily->"CMU Serif"],Style[Text["1/2",c1/2-{0,1.2,0},{-0.25,1}],fontsize,Black,FontFamily->"CMU Serif"],Style[Text["1/2",c2/2-{0,1.2,0},{-0.25,1}],fontsize,Black,FontFamily->"CMU Serif"],Style[Line[{{0,0,angleoff},{0,-angleoff,angleoff},{0,-angleoff,0}}],Black,Thickness[0.005],CapForm["Round"],JoinForm["Miter"]](*,Style[Tube[{{0,0,angleoff},{0,-angleoff,angleoff},{0,-angleoff,0}},0.0125],GrayLevel[0.25],AbsoluteThickness[2],CapForm["Round"],JoinForm["Miter"]]*),Style[Line[{{#,0,0},{#,-1.2,0}}&/@{-1/2,0,1/2}],Black,Thickness[0.005],CapForm["Round"],JoinForm["Miter"]],Style[BlockMap[Arrow[Tube[{{#[[1]],-1.15,0},{#[[2]],-1.15,0}},0.0125]]&,{-1/2,0,1/2},2,1],Darker@StandardGray,Arrowheads[{-0.05,0.05}/2],Thickness[0.005],CapForm["Round"],JoinForm["Miter"]]},
Out[]=
The oloid geometry is then given by the convex hull of these two discs. Visualizing the points around the the rim of these two discs, and then take the convex hull:
In[]:=
cps=N[cp1~Join~cp2];Graphics3D[Point[cps],ImageSize->500]
Out[]=
And we can now compute the convex hull using ConvexHullMesh:
In[]:=
chm=ConvexHullMesh[cps]
Out[]=
We can now easily calculate numerically the volume:
In[]:=
Volume[chm]
Out[]=
3.05014
but also the moment of inertia we can easily find a numerical approximation (because of symmetries the off-diagonal terms are all 0):
In[]:=
moi=MomentOfInertia[chm]//Chop;moi//Grid
Out[]=
0.762762 | 0 | 0 |
0 | 1.45641 | 0 |
0 | 0 | 1.45641 |
In the background what is calculated are the following integrals (for the diagonal terms):
In[]:=
NIntegrate[y^2+z^2,{x,y,z}∈chm]NIntegrate[z^2+x^2,{x,y,z}∈chm]NIntegrate[x^2+y^2,{x,y,z}∈chm]
Out[]=
0.764348
Out[]=
1.45376
Out[]=
1.45376
Now the (upper) shell of the oloid is given by the parametric function (H. Dirnböck and H. Stachel, J. Geom. Graph 1, 105 (1997)), with m and t as parameters:
In[]:=
parafunc=-+(m-1)Cos[t]+,((1-m)Sin[t]),;assumps=0<=m<=1∧-2Pi/3<=t<=2Pi/3;
1
2
m
1+Cos[t]
m
1+2Cos[t]
1+Cos[t]
We can visualize this using ParametricPlot3D:
In[]:=
ParametricPlot3D[{parafunc,parafunc{1,1,-1}},{m,0,1},{t,-2Pi/3,2Pi/3},PlotPoints->{3,80}]
Out[]=
Using this parametrization we can make a more fancy figure:
Derivatives
Derivatives
To calculate area, volume, and moment and inertia we need the derivatives of this parameterization with respect to m and t, and the cross product of those:
This is what these vector look like (for the upper half):
The area we can find by calculating the norm of the cross product of the derivatives (green vectors above), and the factor 2 is accounting for the upper and lower shell. Then we integrate over the variables:
Which gives the neat result that the ‘unit’ oloid has an area of 4π, the same as a sphere!
Volume
Volume
Moment of inertia
Moment of inertia
We can now find the integrals, which we can first find numerically, and compare it to our results above. For the moment of inertia we need the distance squared (and using divergence theorem):
which agree with out previous findings; this is good! Now we can also do it in an exact manner using the power of Mathematica, let’s find first the integrands (again the factor 2 is for the upper and lower shells):
Let’s first integrate the integrands with respect to m:
And now integrate with respect to t:
This are the analytical solutions we were looking for. We can check whether the numerical values match our previous findings:
Which seems to be ok.
Alternatively by Monte Carlo method:
Alternatively by Monte Carlo method:
We generate random points in the convex hull, and then calculate it directly:
which also approximately follows our theoretical finding.
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
The moment of inertia tensor of an oloid
by Sander Huisman
Wolfram Community, STAFF PICKS, September 17, 2026
https://community.wolfram.com/t/28063
by Sander Huisman
Wolfram Community, STAFF PICKS, September 17, 2026
https://community.wolfram.com/t/28063