diff options
Diffstat (limited to 'src/Model/Vec2.elm')
-rw-r--r-- | src/Model/Vec2.elm | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/Model/Vec2.elm b/src/Model/Vec2.elm new file mode 100644 index 0000000..85ff008 --- /dev/null +++ b/src/Model/Vec2.elm @@ -0,0 +1,55 @@ +module Model.Vec2 + ( Vec2 + , add + , sub + , mul + , div + , norm + , clockwiseRotate90 + , isNull + , originVec + ) where + +type alias Vec2 = + { x : Float + , y : Float + } + +add : Vec2 -> Vec2 -> Vec2 +add v1 v2 = + { x = v1.x + v2.x + , y = v1.y + v2.y + } + +sub : Vec2 -> Vec2 -> Vec2 +sub v1 v2 = + { x = v1.x - v2.x + , y = v1.y - v2.y + } + +mul : Float -> Vec2 -> Vec2 +mul m v = + { x = m * v.x + , y = m * v.y + } + +div : Vec2 -> Float -> Vec2 +div v d = + { x = v.x / d + , y = v.y / d + } + +norm : Vec2 -> Float +norm v = sqrt(v.x ^ 2 + v.y ^ 2) + +clockwiseRotate90 : Vec2 -> Vec2 +clockwiseRotate90 v = + { x = -v.y + , y = v.x + } + +isNull : Vec2 -> Bool +isNull v = (v.x == 0) && (v.y == 0) + +originVec : Vec2 +originVec = { x = 0, y = 0 } |