I saw that question at the certain forum and answered it with help of Mathematica 13.1 in such a way. The angles between the unit vectors {0, 0, 1}, {-Sqrt[2/9], -Sqrt[2/3], -1/3}, {-Sqrt[2/9], Sqrt[2/3], -1/3} and {Sqrt[8/9], 0, -1/3} are equal because all the pairwise inner products equal -1/3. The first cylinder is defined as cyl1 = ImplicitRegion[x^2 + y^2 <= 1, {x, y, z}];. The second cylinder is made from the first one by the rotation around the origin which transforms {0, 0, 1} to {Sqrt[8/9], 0, -1/3}}:

 cyl2 = TransformedRegion[r1, Function[p, RotationMatrix[{{0, 0, 1}, {Sqrt[8/9], 0, -1/3}}] . {p[[1]],  p[[2]], p[[3]]}]]

ParametricRegion[{{-(x/3) + (2 Sqrt[2] z)/3, y, -((2 Sqrt[2] x)/3) - z/3}, x^2 + y^2 <= 1}, {x, y, z}]

As we see, cyl2 is parametrically defined. Next, we find the intersection and volume of these cylinders:

intersect1= RegionIntersection[cyl1, cyl2]; Volume[intersect1]

4 Sqrt[2]

Now we consider the third cylinder

 cyl3 = TransformedRegion[r1, Function[p, RotationMatrix[{{0, 0, 1}, {-Sqrt[2/9], Sqrt[2/3], -1/3}}] . {p[[1]], p[[2]], p[[3]]}]];

and its intersection with intersect1

intersect2 = RegionIntersection[intersect1, cyl3];

and the volume



We see Mathematica fails to produce an exact result (which is of no need in the most of cases).

At last, the fourth cylinder

cyl4 = TransformedRegion[r1,Function[p, RotationMatrix[{{0, 0, 1}, {-Sqrt[2/9], -Sqrt[2/3], -1/3}}] . {p[[ 1]], p[[2]], p[[3]]}]]

, its intersection with the previous ones

intersect3 = RegionIntersection[intersect2, cyl4]

and the final volume



Let us visualize

 RegionPlot3D[intersect2, PlotRange -> {{-3/2, 3/2}, {-3/2, 3/2}, {-3/2, 3/2}},
 PlotPoints -> 100, PlotTheme -> "Monochrome"]

enter image description here and

RegionPlot3D[intersect3, PlotRange -> {{-3/2, 3/2}, {-3/2, 3/2}, {-3/2, 3/2}},
PlotPoints -> 100, PlotTheme -> "Monochrome"]

enter image description here

Is it possible to obtain an exact result for Volume[intersect3] with Mathematica? The symmetry of intersect3 and that answer encourage.

Edit. Minor typos (unit instead of init, cyl1 instead of r1, cyl2 instead of r2).

  • $\begingroup$ The Inclusion-Exclusion principle seems applicable here. $\endgroup$
    – MikeY
    Aug 31, 2022 at 15:45
  • $\begingroup$ @MikeY: Thank you for your interest to the question. Can you elaborate your comment, giving us details? $\endgroup$
    – user64494
    Aug 31, 2022 at 16:25

1 Answer 1


This is Steinmetz solid. That article is free to read online after registration.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.