# Equations for a perfect cylinder intersecting a thin plate with a circular cutout

Given a perfect cylinder of diameter D standing vertically and of an arbitrary length, and a thin flat plate with a circular cutout which is a slightly larger diameter than D, and they are intersecting such that the plate is resting on a non-horizontal angle as constrained by the cylinder walls, is there a standard solution for determining the resting angle of the plate?

As an example the cylinder is 3" in diameter and 6" tall. The square plate is 1/4" thick, with a circular cutout of 3.25" diameter. The plate can be slipped over the cylinder and made to rest at a specific angle which is constrained by two points within the edges of the 3.25" circular cutout resting against the diametrically opposed walls of the cylinder. The plate will rest at a small angle off of horizontal in this situation (constrained by friction at the two points of contact). I want to calculate the angle of the plate to the horizontal. In this example it would be something like 5 or 10 degrees.

Before diving into a full analysis of this problem on my own, I am asking if there is a standard example of this configuration of a cylinder and a plate, or perhaps a cylinder and a plane (as an example for a very thin plate) that a member can point me to?

Most examples I have found are for a plane intersecting a cylinder at an arbitrary angle - similar but different as the oversize hole is determining the angle in my problem.

• Welcome to the Mathematica Stack Exchange. I believe this is a question suitable for the Mathematics Stack Exchange.
– Syed
Oct 26, 2021 at 20:38
• You can take a look at this video about the intersection of a cylinder and a plane.
– Syed
Oct 26, 2021 at 20:54
• Perhaps I didn't understand the question, but I would expect an angle ArcCos[dcyl/dcircle] Oct 27, 2021 at 9:53

This problem is simpler if you project it to 2D (let the cylinder be a rectangle, the plate be a line).

Unfortunately, MMA doesn't do projection of 3D regions to 2D regions. It also isn't well developed enough to work out the full 3D intersection analytically (it is an ellipse; MMA can only approximate it), nor the 2D region intersection for arbitrary parameter values (though it recognizes that it must be a line).

Your problem involves a rectangle with sides at $$\pm D/2$$ and a line intersecting the rectangle at $$(\pm D/2,\pm\tan\theta)$$. The distance between these points is given by

Norm[{D/2,Tan@θ}-{-D/2,-Tan@θ}]


Now you assert that this equals $$3+\frac14$$". So:

Solve[Norm[{3/2,Tan@θ}-{-3/2,-Tan@θ}]==3+1/4,θ]


to get $$\tan ^{-1}\left(\frac{5}{8}\right)\approx32^\circ$$. Here's some simple graphics code to see that that makes sense

Graphics@{FaceForm[], EdgeForm@Black, Rectangle[{-3/2, -1}, {3/2, 1}],
Line@{{-3/2, -Tan@ArcTan[5/8]}, {3/2, Tan@ArcTan[5/8]}}}


This assumes an infinitely thin plate. You actually want the formula for the distance from bottom left chamfer to top right chamfer in terms of $$\theta$$, and then solve for $$\theta$$. See if you can work it out.

Look at how terribly MMA performs at approximating the mesh!

Here's the code for that

Manipulate[
Graphics3D@{MeshPrimitives[
DiscretizeRegion@
RegionDifference[
TransformedRegion[
Cuboid[{-D, -D, h/2 - platethickness}, {D, D,
h/2 + platethickness}],
RotationTransform[\[Theta], {0, 1, 0}, {0, 0, h/2}]],
Cylinder[{{0, 0, 0}, {0, 0, h}}, D/2]], 2], [email protected],
Cylinder[{{0, 0, 0}, {0, 0, h}}, D/2]}, {{D, 3}, 0, 10}, {{h, 6},
0, 10}, {{platethickness, 1/4}, 0,
1}, {{\[Theta], RandomReal@{0, \[Pi]/2}}, 0, \[Pi]/2}]

• Adam, I don't know what "MMA" is. However, your insight to project the problem to 2D gives me a good handle on how to go about solving the the problem quantitatively with the tools I do know. Thanks for all of the work you put into this, it is much appreciated and has set me on the right course of action. Oct 26, 2021 at 23:35
• @Adam, see my answer for a better visualization Oct 27, 2021 at 6:56

To long for a comment, here is a better way to do the visualization:

Manipulate[
Show[
ToElementMesh[
RegionDifference[
TransformedRegion[
Cuboid[{-diam, -diam, h/2 - platethickness}, {diam, diam,
h/2 + platethickness}],
RotationTransform[\[Theta], {0, 1, 0}, {0, 0, h/2}]],
Cylinder[{{0, 0, 0}, {0, 0, h}}, diam/2]]]["Wireframe"],
Graphics3D@{[email protected], Cylinder[{{0, 0, 0}, {0, 0, h}}, diam/2]}
], {{diam, 3}, 0, 10}, {{h, 6}, 0, 10}, {{platethickness, 1/4}, 0,
1}, {{\[Theta], RandomReal@{0, \[Pi]/2}}, 0, \[Pi]/2}]


• I've never played with the FEM package -- time to start!
Oct 28, 2021 at 1:10
• @Adam, absolutely! ;-) Oct 28, 2021 at 7:22

An analytic solution is not difficult. With radius of cylinder and circle we may get the angle of the plane by:

rcyl = 1;
rcirc = 1.2;
phi = ArcCos[rcyl/rcirc];
h = Sin[phi];


We can now define an ellipse with half-axes rcyl and rcirc. As an ellipse is a 2D object we will use the 3D object "Ellipsoide" with one of the 3 half-axes verry small. And we also define the circle:

ell = Ellipsoid[{0, 0, 0}, {rcirc, rcyl, 0.0001}];
cir = Ellipsoid[{0, 0, 0}, {rcirc, rcirc, 0.0001}];


Now we assemble our plot:

Graphics3D[{Opacity[0.5],
InfinitePlane[{0, 0, 0}, {{1, 0, -h}, {0, 1, 0}}], Opacity[0.5],
Rotate[ell, phi, {0, 1, 0}], Rotate[cir, phi, {0, 1, 0}],
Opacity[0.3], Cylinder[{{0, 0, -1}, {0, 0, 1}}, rzyl]},
PlotRange -> {{-1, 1}, 1.2 {-1, 1}, {-1, 1}}, Axes -> True]


We can also use HalfSpace and Region to get the result.

normal = {1, 1, 4};
reg = RegionIntersection[HalfSpace[normal, {0, 0, .2}],
HalfSpace[-normal, {0, 0, -.2}],
ImplicitRegion[x^2 + y^2 >= 1, {x, y, z}]];
Show[Region[Style[reg, Directive[Opacity[.8], Cyan]],
PlotRange -> {{-3, 3}, {-3, 3}, {-3, 3}}],
Graphics3D[{Opacity[.2], Cylinder[{{0, 0, 3}, {0, 0, -3}}, 1]}]]