packages feed

easytensor-0.3.1.0: src-ghcjs/Numeric/Matrix/Mat44f.hs

{-# LANGUAGE JavaScriptFFI #-}
{-# LANGUAGE DataKinds #-}
{-# OPTIONS_GHC -fno-warn-orphans  #-}
module Numeric.Matrix.Mat44f () where


import Numeric.DataFrame.Type
import Numeric.Vector
import Numeric.Matrix.Class


instance HomTransform4 Float where
    translate4 = js_translate
    {-# INLINE translate4 #-}
    translate3 = js_translate
    {-# INLINE translate3 #-}
    rotateX = js_rotateX
    {-# INLINE rotateX #-}
    rotateY = js_rotateY
    {-# INLINE rotateY #-}
    rotateZ = js_rotateZ
    {-# INLINE rotateZ #-}
    rotate = js_rotate
    {-# INLINE rotate #-}
    rotateEuler = js_rotateEuler
    {-# INLINE rotateEuler #-}
    lookAt = js_lookAt
    {-# INLINE lookAt #-}
    perspective = js_perspective
    {-# INLINE perspective #-}
    orthogonal = js_orthogonal
    {-# INLINE orthogonal #-}
    toHomPoint = js_toHomPoint
    {-# INLINE toHomPoint #-}
    toHomVector = js_toHomVector
    {-# INLINE toHomVector #-}
    fromHom = js_fromHom
    {-# INLINE fromHom #-}



foreign import javascript unsafe "h$easytensor_m4translate($1)"
    js_translate :: Vector Float n -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4rotateX($1))"
    js_rotateX :: Float -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4rotateY($1))"
    js_rotateY :: Float -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4rotateZ($1))"
    js_rotateZ :: Float -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4rotate($1, $2))"
    js_rotate :: Vector Float 3 -> Float -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4rotateEuler($1, $2, $3))"
    js_rotateEuler :: Float -> Float -> Float -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4lookAt($1,$2,$3))"
    js_lookAt :: Vector Float 3 -> Vector Float 3 -> Vector Float 3 -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4perspective($1, $2, $3, $4))"
    js_perspective :: Float -> Float -> Float -> Float -> Matrix Float 4 4
foreign import javascript unsafe "new Float32Array(h$easytensor_m4orthogonal($1, $2, $3, $4))"
    js_orthogonal :: Float -> Float -> Float -> Float -> Matrix Float 4 4

foreign import javascript unsafe "$r = new $1.constructor(4); $r.set($1); $r[3] = 1;"
    js_toHomPoint :: Vector Float 3 -> Vector Float 4
foreign import javascript unsafe "$r = new $1.constructor(4); $r.set($1); $r[3] = 0;"
    js_toHomVector :: Vector Float 3 -> Vector Float 4
foreign import javascript unsafe "h$easytensor_m4fromHom($1)"
    js_fromHom :: Vector Float 4 -> Vector Float 3