1 import "JavaBuiltin" as Java
3 importJava "javax.vecmath.Quat4d" where
8 createQuat4d :: Double -> Double -> Double -> Double -> Quat4d
10 copyQuat4d :: Quat4d -> Quat4d
12 defaultQuat4d :: Quat4d
14 getX :: Quat4d -> Double
15 getY :: Quat4d -> Double
16 getZ :: Quat4d -> Double
17 getW :: Quat4d -> Double
23 createMQuat4d :: Double -> Double -> Double -> Double -> <Proc> MQuat4d
25 copyMQuat4d :: Quat4d -> <Proc> MQuat4d
27 defaultMQuat4d :: <Proc> MQuat4d
30 getXM :: MQuat4d -> <Proc> Double
32 getYM :: MQuat4d -> <Proc> Double
34 getZM :: MQuat4d -> <Proc> Double
36 getWM:: MQuat4d -> <Proc> Double
37 setX :: MQuat4d -> Double -> <Proc> ()
38 setY :: MQuat4d -> Double -> <Proc> ()
39 setZ :: MQuat4d -> Double -> <Proc> ()
40 setW :: MQuat4d -> Double -> <Proc> ()
43 mulM :: MQuat4d -> Quat4d -> <Proc> ()
45 mulM2 :: MQuat4d -> Quat4d -> Quat4d -> <Proc> ()
48 mulInverseM :: MQuat4d -> Quat4d -> <Proc> ()
50 mulInverseM2 :: MQuat4d -> Quat4d -> Quat4d -> <Proc> ()
53 inverseM :: MQuat4d -> <Proc> ()
55 inverseM2 :: MQuat4d -> Quat4d -> <Proc> ()
58 normalizeM :: MQuat4d -> <Proc> ()
60 normalizeM2 :: MQuat4d -> Quat4d -> <Proc> ()
62 freeze :: MQuat4d -> <Proc> Quat4d
63 freeze = Java.unsafeCoerce
65 // Mapping of mutable operations to immutable ones
68 applyMOp :: (MQuat4d -> <Proc> ()) -> Quat4d -> Quat4d
69 applyMOp op x = runProc let
74 mul :: Quat4d -> Quat4d -> Quat4d
75 mul x y = applyMOp (flip mulM y) x
77 mulInverse :: Quat4d -> Quat4d -> Quat4d
78 mulInverse x y = applyMOp (flip mulInverseM y) x
80 inverse :: Quat4d -> Quat4d
81 inverse = applyMOp inverseM
83 normalize :: Quat4d -> Quat4d
84 normalize = applyMOp normalizeM