I personally would not add a bounding box to the cylinders. It is fairly straightforward to check for cylinder-cylinder and cylinder-sphere intersections:

Cylinder-sphere

------------------------

Let the cylinder start at x, be of radius r, length L, direction d.

Let the sphere be at o, radius R.

Find the shortest distance between the point o and the line x+t*d, as outlined here:

http://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html

Then if the shortest distance is greater than (r+R) then they do NOT intersect.

Otherwise, if the closest point is for t<L, then they DO intersect.

Cylinder-cylinder

-------------------------

Exactly the same concept.

Suppose cylinder A begins at x_A, is of length L_A, has radius r_A, and points in the direction d_A.

Similarly for cylinder B.

Then compute the shortest distance between the axes of each cylinder, as explained here:

http://www.softsurfer.com/Archive/algorithm_0106/algorithm_0106.htm (It's just one equation)

Is this distance greater than (r_A+r_B)? If so, then they do NOT intersect.

Otherwise, suppose the point on the axis of A which is closest to the axis of B is x_A+t*d_A, where t is a parameter. Then if t<L then the cylinders DO intersect.

Does that make sense?

Cylinder-sphere

------------------------

Let the cylinder start at x, be of radius r, length L, direction d.

Let the sphere be at o, radius R.

Find the shortest distance between the point o and the line x+t*d, as outlined here:

http://mathworld.wolfram.c

Then if the shortest distance is greater than (r+R) then they do NOT intersect.

Otherwise, if the closest point is for t<L, then they DO intersect.

Cylinder-cylinder

-------------------------

Exactly the same concept.

Suppose cylinder A begins at x_A, is of length L_A, has radius r_A, and points in the direction d_A.

Similarly for cylinder B.

Then compute the shortest distance between the axes of each cylinder, as explained here:

http://www.softsurfer.com/

Is this distance greater than (r_A+r_B)? If so, then they do NOT intersect.

Otherwise, suppose the point on the axis of A which is closest to the axis of B is x_A+t*d_A, where t is a parameter. Then if t<L then the cylinders DO intersect.

Does that make sense?