Rotating Array Modifier applied to a rotated object issue So initially I've learned using the Array modifier from this video but actually it is decribed in short in this Q&amp;A. When I used it to create a spiral ladder, I got a problem, though: when I used an empty for object offset, the copy ladder step was scaled by more than 10 along Z and by 2 along X which I fixed by scaling the empty.

Now I'm trying to use the Array modifier to create a cylinder with a code of thinner cylinders emerging from it. Here's what I have before applying the modifier:



Note that:


the thin cylinder's facets were moved so that its origin is on its bottom
it was then rotated around the X axis
then it was moved along Y and its origin was moved back to the (0,0,0)
now cursor is also at (0,0,0) and I created an empty also there, at (0,0,0)


So what I'm expecting is when I set an Array modifier with the Object offset of the Empty (the Arrows one), the copies are on the same place as the original cylinder and then I rotate the Empty and get my nice cone. However, even without any rotations, just when I set Object offset to the Empty, I get this:



Man, I'm definitely missing something. I've seen this question but the origin of my thin cylinder is in the same place as the Empty. Any ideas?

Here's my .blend file:


PS and here's an idea of what I'm trying to get (I've made this one by simple creating duplicates and rotating them around Z, but I'd like to have multiple of them placed in a regular manner):
Select the smaller cylinder and apply the rotation and scale.



This can also be done by pressing CtrlA followed by O.

The result should be like this.



Then select the empty and rotate it around the Z axis.



N.B. You could also rotate the small cylinder itself around the Z axis, but I prefer doing all transforms on the empty when using one to guide an array.
And the reason why this happens, is that for every duplicate the Array modifier makes, it takes into account the transforms of both the duplicated object and of the empty. I have not read the source code, nor have I found specific information on how it calculates the transforms, but from what it looks like to me, it divides the scale of the empty by the scale of the object.
An example: The object has scale set to 0.333 and the empty has scale set to 2. The overall scale for each repetion would be 2/0.333 = 6, so each duplicate would be 6 times bigger than the previous one.
With rotation and position, it looks like it's just subtracting the position and rotation respectively of the empty from the position and the rotation respectively of the object.