Plane intersecting a cylinder: points on that ellipse

286 Views Asked by At

I understand that an arbitrary plane intersecting an arbitrary cylinder is described by an ellipse. I want to know how to find the points that lie on that ellipse.

Say the cylinder is described by a 3D vector along its central axis $(u, v, w)$ , a point is space $(Px, Py, Pz)$ and its radius $R$.

Say the plane is described by its cartesian equation $Ax + By + Cz + D = 0$.

Is there a simple way to achieve what I'm trying to do?

Thanks

1

There are 1 best solutions below

1
On

Things are a lot simpler to describe if you use a single name for a single vector. Unfortunately, you've used three of the best vector names, $u,$ $v,$ and $w,$ for mere components.

So let $\mathbf r = (u,v,w)$ be a vector parallel to the cylinder's axis, $P=(P_x,P_y,P_z)$ a point on the axis, $R$ the radius of the cylinder, and $\pi_1$ the plane whose equation is $Ax+By+Cz+D=0.$

Then the vector $\mathbf n = (A,B,C)$ is orthogonal to the plane.

The center of the ellipse is where the axis intersects the plane. You can find this point by projecting $P$ parallel to $\mathbf r$ onto the plane. Let the projected point be $Q.$

Then $\dfrac{\mathbf r \cdot \mathbf n} {\lVert\mathbf a\rVert \lVert\mathbf n\rVert} = \cos\phi,$ where $\phi$ is the angle between $\mathbf n$ and the cylinder's axis.

Now we look for the axes of the ellipse. Both axes lie in the plane, but the shorter axis is orthogonal to the axis while the longer axis is orthogonal to the shorter axis. So we can represent the shorter axis by taking a vector orthogonal to both $\mathbf r$ and $\mathbf n$ -- for example, the cross product $\mathbf r \times \mathbf n$ -- and lengthening or shortening it to a vector of length $R$. Call that vector $\mathbf b$.

To find the longer axis, we need a vector orthogonal to both $\mathbf n$ (so it is in the plane) and $\mathbf b$, for example, $\mathbf b \times \mathbf n$. Now lengthen or shorten that vector until its length is $\dfrac{R}{\cos\phi}.$ Call the resulting vector $\mathbf a.$

You can then make parametric equations to find points on the ellipse just like you can use the parametric equations $(a\cos\theta, b\sin\theta)$ to find points on an ellipse centered at the origin of the Cartesian plane. That is, to get a point on the ellipse, choose any value of $\theta$ and find the point

$$ C + (\cos\theta)\mathbf a + (\sin\theta)\mathbf b, $$

which finds an arbitrary point $E$ on the ellipse by doing scalar multiplication of the two ellipse-axis vectors $\mathbf a$ and $\mathbf b,$ adding their $x$ coordinates to the $x$ coordinate of $C$, and similarly for the $y$ and $z$ coordinates to get the three coordinates of $E.$

In the interest of highlighting the major steps of the procedure, and not getting lost in a sea of numbers, I have left a number of details out of this answer, such as how to project a point parallel to a vector onto a plane.