# Puzzle about 6 infinite cylinders in space

You have 6 infinitely long cylinders (tubes) with the same radius R. Can you arrange them in space in a way that every cylinder touches the other 5? By touching, I mean have a common point or a line. You can't deform them.

By the way I don't know the actual answer. This puzzle came to me after the same puzzle but with cylinders of finite length. And yes, if cylinders have finite length you can arrange them in such way, with one remark: cylinders can touch their bottoms.

• I don't know what is meant by 'eternal'. Mar 31, 2021 at 14:22
• @Jiminion, I assumed 'infinitely long'. Mar 31, 2021 at 14:33
• Does this answer your question? How do I arrange pencils so they all touch each other? Mar 31, 2021 at 14:37
• @StephenTG That question is not a duplicate because it uses cylinders of finite length, and the solutions actually take advantage of that fact. Mar 31, 2021 at 15:29

There has been some mathematical research done on this subject, and it turns out that:

7 mutually touching infinite cylinders is possible

as shown in this paper by Sándor Bozóki, Tsung-Lin Lee, and Lajos Rónyai. The paper was also discussed in for example Huffpost.

For 6 cylinders you can of course just take either of the 7-cylinder solutions in that paper and remove any one cylinder. There are likely many more 6-cylinder solutions, but unfortunately I don't know of one that is simple to describe.

Here's a Sage / Python program which creates a 3D plot of the second solution from the paper by Bozóki, Lee, and Rónyai. The plot is interactive (using three.js), so you can pan, zoom, and rotate the camera, using the mouse, or on a touch screen. This makes it easier to verify that the cylinders are actually mutually touching.

""" Seven mutually touching (infinite) cylinders
From https://www.sciencedirect.com/science/article/pii/S0925772114000819
"""

data = [
[
2.075088491891,
-2.036516392124,
-0.030209763440,
0.599691085438,
],[
-2.688893665930,
4.070505903499,
0.184499043058,
0.426965115851,
],[
-4.033142850644,
-2.655943449984,
0.251380280590,
0.516678258430,
],[
6.311134419772,
-5.229892181735,
-0.474742889365,
1.230302197822,
],[
3.914613907006,
-7.881492743224,
1.698198197367,
-1.164062857743,
]]

ps = [[0,0,-1], [0,0,1]]
ps += [row[:2] + [0] for row in data]

ws = [[1,0,0], [0,1,0]]
ws += [row[2:] + [1 - sum(row[2:])] for row in data]

colors = ["white", "grey", "brown",
"yellow", "red", "blue", "green"]

s0, s1 = -15, 35
def cyl(p, w, color):
p0 = [u + s0*v for u, v in zip(p, w)]
p1 = [u + s1*v for u, v in zip(p, w)]

You can adjust the end points of the cylinders by changing the values of the s0 and s1 parameters.