1 import "JavaBuiltin" as Java
3 importJava "javax.vecmath.Tuple3d" where
9 getX' :: Tuple3d -> Double
12 getY' :: Tuple3d -> Double
15 getZ' :: Tuple3d -> Double
21 getXM' :: MTuple3d -> <Proc> Double
23 getYM' :: MTuple3d -> <Proc> Double
25 getZM' :: MTuple3d -> <Proc> Double
28 setX' :: MTuple3d -> Double -> <Proc> ()
30 setY' :: MTuple3d -> Double -> <Proc> ()
32 setZ' :: MTuple3d -> Double -> <Proc> ()
35 addM' :: MTuple3d -> Tuple3d -> <Proc> ()
37 addM2' :: MTuple3d -> Tuple3d -> Tuple3d -> <Proc> ()
40 subM' :: MTuple3d -> Tuple3d -> <Proc> ()
42 subM2' :: MTuple3d -> Tuple3d -> Tuple3d -> <Proc> ()
45 negateM' :: MTuple3d -> <Proc> ()
47 negateM2' :: MTuple3d -> Tuple3d -> <Proc> ()
50 scaleM' :: MTuple3d -> Double -> <Proc> ()
52 scaleM2' :: MTuple3d -> Double -> Tuple3d -> <Proc> ()
55 clone :: Tuple3d -> <Proc> a
57 copyMTuple3d :: Tuple3d -> <Proc> MTuple3d
58 copyMTuple3d = Java.unsafeCoerce . clone
61 applyMOp :: (MTuple3d -> <Proc> ()) -> Tuple3d -> Tuple3d
62 applyMOp f x = runProc let
67 freeze :: MTuple3d -> <Proc> Tuple3d
68 freeze = Java.unsafeCoerce
70 addTuple x y = applyMOp (flip addM' y) x
71 subTuple x y = applyMOp (flip subM' y) x
72 negateTuple = applyMOp negateM'
73 scaleTuple x s = applyMOp (flip scaleM' s) x
75 class Tuple3dClass a where
76 asTuple :: a -> Tuple3d
77 asTuple = Java.unsafeCoerce
79 getMTuple :: a -> <Proc> MTuple3d
80 getMTuple x = copyMTuple3d (asTuple x)
83 getX = getX' . asTuple
86 getY = getY' . asTuple
89 getZ = getZ' . asTuple
92 add x y = Java.unsafeCoerce $ addTuple (asTuple x) (asTuple y)
95 sub x y = Java.unsafeCoerce $ subTuple (asTuple x) (asTuple y)
98 negate x = Java.unsafeCoerce $ negateTuple (asTuple x)
100 scale :: a -> Double -> a
101 scale x s = Java.unsafeCoerce $ scaleTuple (asTuple x) s
103 instance Tuple3dClass Tuple3d where
113 class MTuple3dClass a where
114 asMTuple :: a -> <Proc> MTuple3d
115 asMTuple = Java.unsafeCoerce
117 getXM :: a -> <Proc> Double
118 getXM = getXM' . asMTuple
120 getYM :: a -> <Proc> Double
121 getYM = getYM' . asMTuple
123 getZM :: a -> <Proc> Double
124 getZM = getZM' . asMTuple
126 setX :: a -> Double -> <Proc> ()
127 setX x v = setX' (asMTuple x) v
129 setY :: a -> Double -> <Proc> ()
130 setY x v = setY' (asMTuple x) v
132 setZ :: a -> Double -> <Proc> ()
133 setZ x v = setZ' (asMTuple x) v
135 addM :: Tuple3dClass b => a -> b -> <Proc> ()
136 addM x y = addM' (asMTuple x) (asTuple y)
138 addM2 :: Tuple3dClass b => a -> b -> b -> <Proc> ()
139 addM2 x y z = addM2' (asMTuple x) (asTuple y) (asTuple z)
141 subM :: Tuple3dClass b => a -> b -> <Proc> ()
142 subM x y = subM' (asMTuple x) (asTuple y)
144 subM2 :: Tuple3dClass b => a -> b -> Tuple3d -> <Proc> ()
145 subM2 x y z = subM2' (asMTuple x) (asTuple y) (asTuple z)
147 negateM :: a -> <Proc> ()
148 negateM x = negateM' (asMTuple x)
150 negateM2 :: Tuple3dClass b => a -> b -> <Proc> ()
151 negateM2 x y = negateM2' (asMTuple x) (asTuple y)
153 scaleM :: a -> Double -> <Proc> ()
154 scaleM x s = scaleM' (asMTuple x) s
156 scaleM2 :: Tuple3dClass b => a -> Double -> b -> <Proc> ()
157 scaleM2 x s y = scaleM2' (asMTuple x) s (asTuple y)