Based on the answer on my previous question I managed to come up with the following equations: $$\begin{eqnarray} k &=& 1 \\ r_\Delta &=& r_b - r_t \\ r(\theta) &=& r_t * e^{\theta/360*k} \\ x(\theta) &=& r(\theta) \cos(\theta) \\ y(\theta) &=& r(\theta) \sin(\theta) \\ z(\theta) &=& (\frac{r_b}{r_\Delta} - \frac{r(\theta)}{r_\Delta}) * h_s \\ d(\theta) &=& diameter * \frac{r(\theta)}{r_b} \\ \end{eqnarray}$$

that give almost the desired spiral.


The problem is that with $k = 1$ the spiral goes beyond the stump (defined by the top radius $r_t$, the bottom radius $r_b$ and the height $h_s$).

The question is what does $k$ need to be so that the spiral ends at the bottom of the stump (at $z = 0$ and $r(\theta) = r_b$)


1 Answer 1


With $k=1$ and with $\theta$ ranging from $0$ to $360$, measured in degrees (as we appear to see in the figure), we get $r(0) = r_t$ and $r(360) = r_t\cdot e.$ And then the largest sphere in the figure is at radius $r_t \cdot e$, which is much larger than $r_b$ in this figure. As the sphere is still on the surface of the cone, it is not only much further from the axis than desired but also at a much lower $z$ coordinate than desired.

If that is an accurate description of what we see in the figure in the question, and if the desired result is that we should see $r(360) = r_b$, we can work backwards to figure out what $k$ should be:

$$r_b = r(360) = r_t \cdot e^{(360/360)\cdot k} = r_t \cdot e^{k}.$$

$$e^{k} = \frac{r_b}{r_t}.$$

The logarithms of these two equal quantities are equal: $$\ln\left(e^{k}\right) = \ln\left(\frac{r_b}{r_t}\right).$$ $$k = \ln r_b - \ln r_t.$$

So if you measure angles in degrees and want a full $360$-degree "wrap" around the cone to start at $r(0) = r_t$ and end at $r(360) = r_b$, then you should set $$r(\theta) = r_t \cdot e^{\theta \cdot (\ln r_b - \ln r_t) / 360}.$$

Note that if you measure angles in radians, then since $360$ degrees is $2\pi$ radians, the formula would be $$r(\theta) = r_t \cdot e^{\theta \cdot (\ln r_b - \ln r_t) / (2\pi)}$$ where $\theta$ starts at $0$ and grows to $2\pi$ to accomplish one full turn around the axis.

  • $\begingroup$ Sorry for not using the right notation there. Indeed I meant $(\theta/360)\cdot k$ so $r(\theta) = r_t \cdot e^{\theta \cdot (\ln r_b - \ln r_t) / 360}$ is the answer I was after. Thank you so much. $\endgroup$
    – tcurdt
    Jul 6, 2015 at 8:30
  • $\begingroup$ @tcurdt Technically, your notation was correct; it's just prone to having people misunderstand it the way I did. I have removed the incorrect interpretation from the answer; and of course the formula at the end (the one you wanted to find) is the same. $\endgroup$
    – David K
    Jul 6, 2015 at 11:54

You must log in to answer this question.

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