module Physics.ODE.Rotation
( createMatrix3
, setIdentity
, fromAxisAndAngle
, fromEulerAngles
, peekMatrix3
) where
import Foreign
import Physics.ODE.Types
import Physics.ODE.Hsc
createMatrix3 :: IO Matrix3
createMatrix3 = do matrix <- mallocBytes sizeOfMatrix3
setIdentity matrix
return matrix
foreign import ccall unsafe "dRSetIdentity" setIdentity :: Matrix3 -> IO ()
foreign import ccall unsafe "dRFromAxisAndAngle" fromAxisAndAngle
:: Matrix3 -> ODEreal -> ODEreal -> ODEreal -> ODEreal -> IO ()
foreign import ccall unsafe "dRFromEulerAngles" fromEulerAngles
:: Matrix3 -> ODEreal -> ODEreal -> ODEreal -> IO ()
peekMatrix3 :: Matrix3 -> IO [ODEreal]
peekMatrix3 = peekArray (3*4)