{ x : Basics.Float, y : Basics.Float }
vec2 : Basics.Float -> Basics.Float -> Vec2
Create a vector out of its x and y components.
The set functions create a new copy of the vector, updating a single field.
setX : Basics.Float -> Vec2 -> Vec2
setY : Basics.Float -> Vec2 -> Vec2
zero : Vec2
up : Vec2
down : Vec2
left : Vec2
right : Vec2
add : Vec2 -> Vec2 -> Vec2
sub : Vec2 -> Vec2 -> Vec2
sub v1 v2
computes v1 - v2.
Can be easily confused in pipelines like
v2
|> sub v1 -- this is actually v1 - v2
I think both alternatives are confusing, so I chose this one rather arbitrarily.
negate : Vec2 -> Vec2
Given v
, computes -v
.
scale : Basics.Float -> Vec2 -> Vec2
dot : Vec2 -> Vec2 -> Basics.Float
normalize : Vec2 -> Vec2
Normalizes a vector v, returning v/|v|. If the vector is 0, it returns 0.
direction : { from : Vec2, to : Vec2 } -> Vec2
Returns a normalized vector pointing from from
to to
.
midpoint : Vec2 -> Vec2 -> Vec2
Returns the midpoint between two points. This operation is commutative.
lerp : { from : Vec2, to : Vec2 } -> Basics.Float -> Vec2
Linearly interpolate from
to to
with a [0, 1] parameter.
lerp { from = vec2 0 1, to = vec2 1 1 } 0.75 == vec2 0.75 1
angle : Vec2 -> Basics.Float
scaleX : Basics.Float -> Vec2 -> Vec2
scaleY : Basics.Float -> Vec2 -> Vec2
rotate : Basics.Float -> Vec2 -> Vec2
Rotates a given vector by an angle in radians, in counterclockwise fashion.
length : Vec2 -> Basics.Float
Computes |v|
for a vector v
.
If you need the square of this value, use Vec2.lengthSquared for efficiency.
lengthSquared : Vec2 -> Basics.Float
Computes |v|^2
for a vector v
.
Faster than length
because it saves a square root operation.
distance : Vec2 -> Vec2 -> Basics.Float
distanceSquared : Vec2 -> Vec2 -> Basics.Float
cross : Vec2 -> Vec2 -> Basics.Float
Returns the z-coordinate of the cross product when interpreting the 2D vectors as
3D vectors of the form vec3 v.x v.y 0
:
cross v1 v2
== (Vec3.cross
(vec3 v1.x v1.y 0)
(vec3 v2.x v2.y 0)
).z
This operation is useful for calculating the torque created by a force in 2D, for example.
toString : Vec2 -> String
Convenient for debugging purposes.
point : Vec2 -> Vec3
vector : Vec2 -> Vec3
fromHomogeneous : Vec3 -> Vec2