let geom_kind (geom : 'a dGeomID) =
    match dGeomGetClass geom with
    | SphereClass        -> Sphere_geom        (Obj.magic geom : sphere_geom        dGeomID)
    | BoxClass           -> Box_geom           (Obj.magic geom : box_geom           dGeomID)
    | CapsuleClass       -> Capsule_geom       (Obj.magic geom : capsule_geom       dGeomID)
    | CylinderClass      -> Cylinder_geom      (Obj.magic geom : cylinder_geom      dGeomID)
    | PlaneClass         -> Plane_geom         (Obj.magic geom : plane_geom         dGeomID)
    | RayClass           -> Ray_geom           (Obj.magic geom : ray_geom           dGeomID)
    | ConvexClass        -> Convex_geom        (Obj.magic geom : convex_geom        dGeomID)
    | GeomTransformClass -> GeomTransform_geom (Obj.magic geom : geomTransform_geom dGeomID)
    | TriMeshClass       -> TriMesh_geom       (Obj.magic geom : trimesh_geom       dGeomID)
    | HeightfieldClass   -> Heightfield_geom   (Obj.magic geom : heightfield_geom   dGeomID)

    | FirstSpaceSimpleSpaceClass  -> (Geom_is_space)
    | HashSpaceClass              -> (Geom_is_space)
    | LastSpaceQuadTreeSpaceClass -> (Geom_is_space)

    | FirstUserClass -> (User_class)
    | LastUserClass  -> (User_class)