package body gel.Conversions is use Math; function to_GL (Self : in geometry_3d.bounding_Box) return openGL.Bounds is the_Bounds : opengl.Bounds := (Ball => <>, Box => (Lower => to_GL (Self.Lower), Upper => to_GL (Self.Upper))); begin openGL.set_Ball_from_Box (the_Bounds); return the_Bounds; end to_GL; function to_GL (Self : in Real) return opengl.Real is begin return opengl.Real (Self); exception when constraint_Error => if Self > 0.0 then return opengl.Real'Last; else return opengl.Real'First; end if; end to_GL; function to_GL (Self : in Vector_3) return opengl.Vector_3 is begin return [to_GL (Self (1)), to_GL (Self (2)), to_GL (Self (3))]; end to_GL; function to_GL (Self : in Matrix_3x3) return opengl.Matrix_3x3 is begin return [[to_gl (Self (1, 1)), to_gl (Self (1, 2)), to_gl (Self (1, 3))], [to_gl (Self (2, 1)), to_gl (Self (2, 2)), to_gl (Self (2, 3))], [to_gl (Self (3, 1)), to_gl (Self (3, 2)), to_gl (Self (3, 3))]]; end to_GL; function to_GL (Self : in Matrix_4x4) return opengl.Matrix_4x4 is begin return [[to_gl (Self (1, 1)), to_gl (Self (1, 2)), to_gl (Self (1, 3)), to_gl (Self (1, 4))], [to_gl (Self (2, 1)), to_gl (Self (2, 2)), to_gl (Self (2, 3)), to_gl (Self (2, 4))], [to_gl (Self (3, 1)), to_gl (Self (3, 2)), to_gl (Self (3, 3)), to_gl (Self (3, 4))], [to_gl (Self (4, 1)), to_gl (Self (4, 2)), to_gl (Self (4, 3)), to_gl (Self (4, 4))]]; end to_GL; function to_Math (Self : in opengl.Vector_3) return math.Vector_3 is begin return [Self (1), Self (2), Self (3)]; end to_Math; end gel.Conversions;