Cone Diagram

I'm trying to write a program that prints out the flat pattern for a cone with an angled bottom when given its height, base diameter, and base pitch like in the diagram above.

My approach has been to divide the base circumference into small increments and for each increment, find the slant length from the cones vertex. The lowest point I've found to be $\sqrt{H^2R^2}$ where $H$=height and $R$= base radius.

For each increment, both $R$ and $H$ should change as the slants move up the pitch. Its been a while since I've done math like this and am having trouble coming up with a method to account for this!

How can I find the new height and diameter given a distance travelled along the base circumference? or is there an easier way to determine the slant length for any given point on the cones base circumference?

The program will be used to fabricate sheetmetal truncated cones for roof flashings.


1 Answer 1


If the base radius is $R$, the height is $H$, then the semi-vertical angle of the cone is

$ \theta_c = \tan^{-1} \left(\dfrac{R}{H} \right) $

Placing the origin of the $3$-dimensional space at the apex of the cone, the parametric equation of points on the surface of the cone is

$ p(\phi, s) = s ( \sin(\theta_c) \cos(\phi), \sin(\theta_c) \sin(\phi), - \cos(\theta_c) ) $

where $s$ is the slant distance from the top of the cone, and $\phi$ is the azimuth angle in the $xy$ plane.

Now the cutting plane cuts through the cone, and has a normal vector given by

$ n = (- \sin(\alpha), 0, \cos(\alpha) ) $

where $\alpha$ is the pitch angle. Also, the cutting plane passes through the point $(-R, 0, -H) $ (Recall that the origin is at the cone apex). Therefore, based on the cutting plane normal and the point it passes through, its equation is

$ - \sin(\alpha) (x + R) + \cos(\alpha) (z + H ) = 0 $

Substituting $ p(\phi, s) = (p_x, p_y, p_z) $ into the plane equation results in

$ - \sin(\alpha) ( s \sin(\theta_c) \cos(\phi) + R) + \cos(\alpha) (-s \cos(\theta_c) + H ) = 0 $

Solving for $s$

$ s = \dfrac{ H \cos(\alpha) - R \sin(\alpha) }{ \sin(\alpha) \sin(\theta_c) \cos(\phi) + \cos(\alpha) \cos(\theta_c)} $

Since you want to print out a flat pattern, then you have to flatten the cone, and express $s$ in terms of the flattened angle $\psi $. The relation between $\psi$ and $\phi$ is through the arc length of the base, namely

$ \dfrac{R}{\sin(\theta_c)} \psi = R \phi $


$ \phi = \dfrac{ \psi }{\sin(\theta_c) }$

The range for $\psi$ is the interval $[0, 2 \pi \sin(\theta_c) ] $

Now the equation for $s$ is

$ s = \dfrac{ H \cos(\alpha) - R \sin(\alpha) }{ \sin(\alpha) \sin(\theta_c) \cos\big( \dfrac{\psi}{\sin(\theta_c)} \big) + \cos(\alpha) \cos(\theta_c)} $

Note that everything in this equation is constant, except $\psi$.

To print out the flattened cone, you have to plot it in polar coordinates with $s$ being the radius, and $\psi$ the polar angle.

  • $\begingroup$ having a lot of trouble comprehending this but I think I can piece it together. So I can plot points from the origin in increments of $\psi$ degrees and placing a point at $S$ distance which will be a point on the cones base? $\endgroup$ Jun 18, 2022 at 22:18
  • 1
    $\begingroup$ Yes. That's correct. $\endgroup$ Jun 18, 2022 at 22:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .