-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Extends the Vec package with some 4x4 transform matrices
--
-- This package adds some 4x4 transform matrices to the Vec package, that
-- is useful in graphics applications, such as those written with the
-- GPipe package. Specifically, it adds translation, scaling, rotation,
-- perspective projection and orthogonal projection matrices.
@package Vec-Transform
@version 1.0.2
-- | Some 4x4 transformation matrices, using a right handed coordinate
-- system. These matrices are used by multiplying vectors from the right.
--
-- The projection matrices will produce vectors in a left handed
-- coordinate system, i.e. where z goes into the screen.
module Data.Vec.LinAlg.Transform3D
-- | A 4x4 translation matrix
translation :: (Num a) => Vec3 a -> Mat44 a
-- | A 4x4 rotation matrix for a rotation around the X axis
rotationX :: (Floating a) => a -> Mat44 a
-- | A 4x4 rotation matrix for a rotation around the Y axis
rotationY :: (Floating a) => a -> Mat44 a
-- | A 4x4 rotation matrix for a rotation around the Z axis
rotationZ :: (Floating a) => a -> Mat44 a
-- | A 4x4 rotation matrix for a rotation around an arbitrary normalized
-- vector
rotationVec :: (Floating a) => Vec3 a -> a -> Mat44 a
-- | A 4x4 rotation matrix from the euler angles yaw pitch and roll. Could
-- be useful in e.g. first person shooter games,
rotationEuler :: (Floating a) => Vec3 a -> Mat44 a
-- | A 4x4 rotation matrix from a normalized quaternion. Useful for most
-- free flying rotations, such as airplanes.
rotationQuat :: (Num a) => Vec4 a -> Mat44 a
-- | A 4x4 rotation matrix for turning toward a point. Useful for targeting
-- a camera to a specific point.
rotationLookAt :: (Floating a) => Vec3 a -> Vec3 a -> Vec3 a -> Mat44 a
-- | A 4x4 scaling matrix
scaling :: (Num a) => Vec3 a -> Mat44 a
-- | A perspective projection matrix for a right handed coordinate system
-- looking down negative z. This will project far plane to z =
-- +1 and near plane to z = -1, i.e. into a left handed
-- system.
perspective :: (Floating a) => a -> a -> a -> a -> Mat44 a
-- | An orthogonal projection matrix for a right handed coordinate system
-- looking down negative z. This will project far plane to z =
-- +1 and near plane to z = -1, i.e. into a left handed
-- system.
orthogonal :: (Fractional a) => a -> a -> Vec2 a -> Mat44 a