module ZEBEDDE.Quaternion where import ZEBEDDE.Core.Vector import Data.Vect.Float.Base import Data.Vect.Float.Util.Quaternion vec' :: Vec -> Vec3 vec' v = (\ (a,b,c)-> Vec3 (realToFrac a)(realToFrac b)(realToFrac c) ) $ unVec v vec'' :: Vec3 -> Vec vec'' (Vec3 a b c) = vec ((realToFrac a),(realToFrac b),(realToFrac c)) rotate :: (Vec,Double) -> Vec -> Vec rotate (axis,angle) v = vec'' (actU (rotU'' axis angle) (vec' v)) rotU'' :: Vec -> Double -> U rotU'' v d = rotU (vec' v) (realToFrac d) testRotation n = rotate (vec (1,0,0),n) (vec (0,0,1))