Ticket #347: vector.2.hs

File vector.2.hs, 748 bytes (added by goertzen, 9 years ago)
Line 
1{-
2
32d and 3d vector library
4
5-}
6module Vector where
7
8
9
10class Vector b where
11   add,subtract :: Vector b -> Vector b -> Vector b
12   abs :: Vector b -> a
13   
14data Vector2 a = Vector2 (a,a)
15data Vector3 a = Vector3 (a,a,a)
16
17instance Vector Vector2 where
18   add (Vector2 (x1,y1)) (Vector2 (x2,y2)) = Vector2 (x1 + x2 , y1 + y2)
19   subtract (Vector2 (x1,y1)) (Vector2 (x2,y2)) = Vector2 (x1 - x2 , y1 - y2)
20   abs Vector2 (x,y) = sqrt (x*x + y*y)
21   
22instance Vector Vector3 where
23   add (Vector3 (x1,y1,z1)) (Vector3 (x2,y2,z2)) = Vector3 (x1 + x2 , y1 + y2 , z1 + z2 )
24   subtract (Vector3 (x1,y1,z1)) (Vector3 (x2,y2,z2)) = Vector3 (x1 - x2 , y1 - y2 , z1 - z2 )
25   abs Vector3 (x,y,z) = sqrt (x*x + y*y + z*z)
26   
27   
28