# How to simulate cylinder shape in collision detection?

AFAIK, many physics engines like Physx and Havok don't incorporate cylinder as basic shape because it is expensive than sphere, box and capsule. But bullet engine does incorporate cylinder as a basic shape. Do they found any fast algorithm to simulate the cylinder and what is that?

• Havok.. hkpCylinderShapeClass. Why do you suspect a cylinder is more expensive than a capsule? I don't know about Physx, but Havok most certainly supports cylinders, capsules and very complex geometries. But the cylinder is not considered expensive. Of course, the sphere is the "most" trivial, with the box following. The cylinder/capsule should follow (it's actually based on segment vs something collision queries, and these are actually pretty cheap to compute). Sep 17 '13 at 11:26
• @teodron I know capsule/capsule intersection test is cheap, but isn't cylinder/cylinder intersection a lot more expensive ? Jun 18 '15 at 7:59
• @JamesAMD to answer your question accurately, I should look into specific implementation details of those collision queries and preferably benchmark them on different processor architectures. Looks like finding the exact collision point is tricky, involving a bit of conjugate gradient search, as detailed by Eberly: geometrictools.com/Documentation/IntersectionOfCylinders.pdf . Aside from that, as I said, one needs benchmarks to see how much the "early-out" tests help avoid the "expensive" part :). Jun 19 '15 at 11:52
• @JamesAMD I'm not sure about Bullet, but last time I meddled with Havok, I think the actual collision between two cylinders boils down to treating them as convex solids and using GJK (which is indeed more expensive). But since Havok is not open source, judging by how the cylinder shape is formed, one can only hypothesize that GJK or anything else as general is the way to go. See here: transporter-game.googlecode.com/svn/trunk/inc/physics/Physics/… Jun 19 '15 at 11:58