 $$C$$ = Point at the center of the base of the cylinder
$$H$$ = Point at the center of the top of the cylinder
$$r$$ = Cylinder radius
$$P$$ = Point on the cylinder surface

$$L_{0}$$ = Point on the line
$$\mathbf{v}$$ = Vector that defines the line direction
Parametric equation of a point on the cylinder A generic point on the cylinder satisfies the equation: $\left\lVert P - C \right\rVert = \sqrt{\left\lVert Q - C \right\rVert^{2} + r^{2}}$ Both sides of the equation can be raised by the power of 2, to simplify the calculations. $\left\lVert P - C \right\rVert^{2} = \left\lVert Q - C \right\rVert^{2} + r^{2}$ The vector $$\mathbf{h}$$ represents the axis of the cylinder. $\mathbf{h} = \left( H - C \right) \qquad \mathbf{\hat{h}} = \frac{\left( H - C \right)}{\left\lVert H - C \right\rVert}$ The segment $$\overline{CQ}$$ can be expressed in terms of $$P$$ as: $\left\lVert Q - C \right\rVert = \left( P - C \right) \cdot \mathbf{\hat{h}}$ and substituted back. $\left\lVert P - C \right\rVert^{2} - \left[ \left( P - C \right) \cdot \mathbf{\hat{h}} \right]^{2} = r^{2}$ Parametric equation of the line A generic line defined by a point $$L_{0}$$ and a direction vector $$\mathbf{v}$$. It describes all the points along the line as a function of the parameter $$t$$. $L_{\left( t \right)} = L_{0} + t \mathbf{v}$ Intersections calculation To calculate the intersection between cylinder and line, substitute the generic point $$P$$ on the cylinder with a generic point on the line $$L_{(t)}$$. $\left\lVert L_{0} + t \mathbf{v} - C \right\rVert^{2} - \left[ \left( L_{0} + t \mathbf{v} - C \right) \cdot \mathbf{\hat{h}}\right]^{2} = r^{2}$ Define a vector $$\mathbf{w}$$ equal to the difference of $$L_{0}$$ and $$C$$: $\mathbf{w} = L_{0} - C$ and substitute back. $\left\lVert t \mathbf{v} + \mathbf{w} \right\rVert^{2} - \left[ \left( t \mathbf{v} + \mathbf{w} \right) \cdot \mathbf{\hat{h}} \right]^{2} = r^{2}$ The length squared of a vector is equal to the dot product of the vector by itself. $\left( t \mathbf{v} + \mathbf{w} \right) \cdot \left( t \mathbf{v} + \mathbf{w} \right) - \left[ \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right) t + \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right) \right]^{2} = r^{2}$ Expand the dot product and the power. $\left( \mathbf{v} \cdot \mathbf{v} \right) t^{2} + 2 \left( \mathbf{v} \cdot \mathbf{w} \right) t + \left( \mathbf{w} \cdot \mathbf{w} \right) - \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right)^{2} t^{2} - 2 \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right) \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right) t - \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right)^{2} = r^{2}$ Group by the coefficients of $$t$$. $\left[ \left( \mathbf{v} \cdot \mathbf{v} \right) - \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right)^{2} \right] t^{2} + 2 \left[ \left( \mathbf{v} \cdot \mathbf{w} \right) - \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right) \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right) \right] t + \left( \mathbf{w} \cdot \mathbf{w} \right) - \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right)^{2} - r^{2} = 0$ Substitute the coefficients of $$t$$ to obtain a simpler quadratic equation. $\begin{cases} a = \left( \mathbf{v} \cdot \mathbf{v} \right) - \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right)^{2} \\ b = 2 \left[ \left( \mathbf{v} \cdot \mathbf{w} \right) - \left( \mathbf{v} \cdot \mathbf{\hat{h}} \right) \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right) \right] \\ c = \left( \mathbf{w} \cdot \mathbf{w} \right) - \left( \mathbf{w} \cdot \mathbf{\hat{h}} \right)^{2} - r^{2} \end{cases}$ Solve for $$t$$. $a t^{2} + b t + c = 0$ Intersection points
• if $$\left( b^{2} - 4 a c \right) > 0$$
The distance between the cylinder axis $$\overline{CH}$$ and the line $$L_{ \left( t \right) }$$ is smaller than the cylinder radius $$r$$. There are two intersections at: $L_{int_{1,2}} = L_{0} + t_{1,2} \mathbf{v} \qquad t_{1,2} = \frac{ - b \pm \sqrt{ b^{2} - 4 a c } }{ 2 a }$
• if $$\left( b^{2} - 4 a c \right) = 0$$
The distance between the cylinder axis $$\overline{CH}$$ and the line $$L_{ \left( t \right) }$$ is equal to the cylinder radius $$r$$. The line $$L_{ \left( t \right) }$$ is tangent to the cylinder.

• if $$\left| \mathbf{\hat{v}} \cdot \mathbf{\hat{h}} \right| \neq 1$$
There is one intersection at: $L_{int} = L_{0} + t \mathbf{v} \qquad t = - \frac{ b }{ 2 a }$
• if $$\left| \mathbf{\hat{v}} \cdot \mathbf{\hat{h}} \right| = 1$$
The line $$L_{ \left( t \right) }$$ lies on the cylinder surface. There are infinite intersections.

• if $$\left( b^{2} - 4 a c \right) < 0$$
The distance between the cylinder axis $$\overline{CH}$$ and the line $$L_{ \left( t \right) }$$ is greater than the cylinder radius $$r$$. There are no intersections.

If any intersections are found and the cylinder is not infinite, the projection of the intersections on the cylinder axis must be between the two extremities $$C$$ and $$H$$.

• if $$0 \leq \left( L_{int} - C \right) \cdot \mathbf{h} \leq \left\lVert \mathbf{h} \right\rVert$$
The intersection is on the cylinder surface.

• if $$\left( L_{int} - C \right) \cdot \mathbf{h} < 0$$
The intersection is below the base of the cylinder. Test the intersection with the base cap.

• if $$\left( L_{int} - C \right) \cdot \mathbf{h} > \left\lVert \mathbf{h} \right\rVert$$
The intersection is above the top of the cylinder. Test the intersection with the top cap.