1
$\begingroup$

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.

Thanks for any help you can offer.

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

4 Answers 4

2
$\begingroup$

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]}}}

2d

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!

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}]
$\endgroup$
2
  • $\begingroup$ 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. $\endgroup$
    – FiddyOhm
    Oct 26, 2021 at 23:35
  • 1
    $\begingroup$ @Adam, see my answer for a better visualization $\endgroup$
    – user21
    Oct 27, 2021 at 6:56
2
$\begingroup$

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}]

enter image description here

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

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]

enter image description here

$\endgroup$
1
$\begingroup$

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]}]]

enter image description here

$\endgroup$

Your Answer

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

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