This question has vexed me for the 20 years we've lived at my current house. There is a fir tree in the front that I dress every Christmas with lights. It grows. I prune it. This is what it looks like with the lights on...

Christmas lights on tree

The bulbs (purple dots) are all on a single string that I start at the top and helically wrap down to the bottom. There are 100 bulbs spaced 300mm apart. I have decided that the tree looks best if the height is twice the width at the base.

Q. What height should I maintain the tree at so that all the bulbs are equispaced from each other? I take this to mean that the next wrap around the tree is 300mm in Z below the previous wrap. Not perfect equidistance, but it will do for the neighbours and me.

(There are similar questions, but I believe non so specific.)

  • $\begingroup$ So the distance between the Christmas balls is 300, AND the distance between each twist is also 300? $\endgroup$ Dec 1, 2016 at 1:38
  • $\begingroup$ Tall enough to reach the ground. Abraham Lincoln. $\endgroup$
    – Will Jagy
    Dec 1, 2016 at 2:00
  • 3
    $\begingroup$ You need a cylindrical tree. $\endgroup$
    – fleablood
    Dec 1, 2016 at 2:02
  • $\begingroup$ @AntoniParellada Correct. $\endgroup$
    – Paul Uszak
    Dec 1, 2016 at 2:23

1 Answer 1


Nice question! I learned a few things as I was looking for the solution.

I assume that the length of your light cord is $0.3\text{ meters} \times 99 = 29.7$m (explanation: In the picture you posted, it seems that the cord starts and ends with a light bulb, so there are $99$ segments in between, each with a length of $0.3$m.

I also assume (as you state in the comments) that you want each twist to be $0.3$m apart. Note that this is not the same as a bulb being equidistant with the bulbs around it, as the bulbs on different twists will be somewhat further apart than $0.3$m. But it is a good enough approximation. Besides, I think that your original restriction (exactly equidistant bulbs) might not be possible with a conical spiral. In any case, since you are fine with each twist being $0.3$m apart, we will work with this assumption, as it makes the problem easier to solve.

The general parametric equations that define a conical spiral are: $$\begin{array}{rl} x =& t\cdot r\cdot \cos(\alpha \cdot t)\\ y =& t\cdot r\cdot \sin(\alpha \cdot t) \\ z =& t \end{array} $$ Where $t$ is a variable that expresses the vertical distance from the tip of the cone, $r$ is the radius of the cone at $t=1$ and $a$ is a parameter that affects how densely the twists are wound around the cone. The bigger the $a$ the more dense the winding.

What is $r$ in our problem? We want the height to be double the diameter so at distance $1$m from the cone tip we simply want $r = \frac14$ meters (all distance units will be expressed in meters).

What should $\alpha$ be? Setting $\alpha \cdot t = 2\pi$ means a full turn/twist around the cone, and since we want the starting point of the twist with the ending point of the twist to be $0.3$m apart, this means that $\alpha = \frac{2\pi}{0.3}$. Edit: no, this means that they are $0.3$m apart in the vertical direction ($t$ is vertical distance). What we need is that the spirals are $0.3$m apart on the surface of the cone. So, how much is $t$ if the distance on the surface of the cone is $0.3$? If we take a cross section of the cone we can form a right triangle, where the hypotenuse is $0.3$, one side (the vertical distance) is $t$, and the other side is $t/4$. Applying the pythagorean theorem we find that $t = 0.3\cdot \frac{4}{\sqrt{17}}$. So we want $\alpha \cdot \left( 0.3\cdot \frac{4}{\sqrt{17}}\right) = 2\pi \iff \alpha = \frac{2\pi}{0.3} \cdot \frac{\sqrt{17}}{4}$

We have established parameters $\alpha$ and $r$, so our conical spiral is defined fully. But how to we find the height of the cone/tree? The arc length of a conical spiral is: $$\text{length}(t) = \frac12t \sqrt{1+r^2(1+\alpha^2t^2)}+\frac{1+r^2}{2\alpha r}\text{sinh}^{-1}\left( \frac{\alpha\cdot r\cdot t}{\sqrt{1+r^2}}\right)$$

Plugging in $\text{length}(t)=29.7$, $r=\frac14$, $\alpha = \frac{2\pi}{0.3}\cdot \frac{\sqrt{17}}{4}$ we can solve for t to get $t \approx \bbox[5px,border:2px solid red]{3.295}$ meters.

So if you make your tree about $3.3$ meters tall and make your twists about $0.3$ meters apart, then you will have the coverage that you want.

Here's how your light bulb spiral might look like (it was a bit tricky to place the $100$ bulbs on the graph, I was happy that I succeeded in the end):

$\hspace{2cm}$Christmas tree conical spiral

And here's a side view of the spiral. As you can see there are about $11.5$ twists.

$\hspace{3cm}$Christmas tree conincal spiral side view

You can find the Python code I wrote to create the graphs here.

I hope this answer can help you with your lights installation. Merry Christmas! :)

  • $\begingroup$ Although I have to say that the height does not look double the base in the figure. I 'll investigate later. $\endgroup$
    – Thanassis
    Dec 1, 2016 at 5:23
  • 1
    $\begingroup$ Looks like you imposed the vertical distance between turns to be $0.3$ m, but I think you should consider instead the distance along the surface, which is greater by a factor of $\sqrt5/2$. $\endgroup$ Dec 1, 2016 at 10:44
  • $\begingroup$ Ah yes, sorry. It's a picture shamelessly stolen from Google Images. I didn't know how to create a mathematically correct one. I did though add the bulb dots. $\endgroup$
    – Paul Uszak
    Dec 1, 2016 at 11:44
  • $\begingroup$ @Aretino ah yes, you are right! I'll correct it. But why is the factor $\sqrt{5}/2$? Shouldn't it be $\sqrt{17}/4$? $\endgroup$
    – Thanassis
    Dec 1, 2016 at 15:18
  • 1
    $\begingroup$ @PaulUszak your picture is fine, I was talking about the graphs I posted. And the simple answer to why my spirals seem "short" is that the z axis has a different scale than x, y. If they were drawn on the same scale, the cone would appear elongated (as it really is). $\endgroup$
    – Thanassis
    Dec 1, 2016 at 15:22

You must log in to answer this question.

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