Module vec2
vec2: A simple 2-component vector
Functions
vec2 (x, y) | Create a new vector with components x, y: (Can also be used to duplicate a vector: vec2(v)) |
copy (v) | Create a copy of a vector: |
vec2:set (x, y) | Set the components of a vector: |
fromAngle (angle) | Create a unit (length 1) vector from an angle |
fromPolar (length, angle) | Create a vector from a polar form length and angle |
vec2:add (v) | Add a vector (or number) to self (in-place) |
addnew (a, b) | Add two vectors (or numbers) to create a new vector |
vec2:sub (v) | Subtract a vector (or number) to self (in-place) |
subnew (a, b) | Subtract two vectors (or numbers) to create a new vector |
vec2:mul (v) | Multiply a vector (or number) to self (in-place) |
mulnew (a, b) | Multiply two vectors (or numbers) to create a new vector |
vec2:div (v) | Divide a vector (or number) to self (in-place) |
divnew (a, b) | Divide two vectors (or numbers) to create a new vector |
vec2:pow (v) | Raise to power a vector (or number) to self (in-place) |
pownew (a, b) | Raise to power two vectors (or numbers) to create a new vector |
vec2:mod (v) | Calculate modulo a vector (or number) to self (in-place) |
modnew (a, b) | Calculate modulo two vectors (or numbers) to create a new vector |
vec2:min (v) | Calculate minimum of elements (in-place) |
minnew (a, b) | Calculate minimum of elements to create a new vector |
vec2:max (v) | Calculate maximum of elements (in-place) |
maxnew (a, b) | Calculate maximum of elements to create a new vector |
vec2:clip (lo, hi) | Constrain vector to range (in-place) |
vec2:clip (lo, hi) | Constrain vector to range to create a new vector |
vec2:relativewrap (dimx, dimy) | Determine shortest relative vector in a toroidal space |
vec2:relativewrapnew (dimx, dimy) | Create new vector as shortest relative vector in a toroidal space |
vec2:lerp (v, f) | interpolate from self to v by factor of f |
lerpnew (a, b, f) | create a vector from the linear interpolation of two vectors: |
vec2:normalize () | set the length of the vector to 1 (unit vector) (randomized direction if self length was zero) |
vec2:normalizenew () | return a normalized copy of the vector (randomized direction if self length was zero) |
vec2:limit (maximum) | Impose a maximum magnitude Rescales vector if greater than maximum |
vec2:limitnew (maximum) | Create a copy of a vector, limited to a maximum magnitude Rescales vector if greater than maximum |
vec2:setangle (a) | Rotate a vector to a specific angle: |
vec2:setanglenew (a) | Return a copy rotated to a specific angle: |
vec2:setmag (m) | Rescale a vector to a specific magnitude: |
vec2:setmagnew (m) | Return a vector copy rescaled to a specific magnitude: |
vec2:rotate (angle) | Rotate a vector by an angle |
vec2:rotatenew (angle) | Create a vector by rotating a vector by an angle |
random (mag) | Create a new vector in a uniformly random direction: |
vec2:randomize (mag) | Set to a vector of magnitude 1 in a uniformly random direction: |
vec2:length () | return the length of a vector (Can also use #vector) |
vec2:angle () | Return the angle to the vector (direction) |
vec2:polar () | Return the magnitude and angle (polar form): |
dot (a, b) | return the dot product of two vectors: |
vec2:distance (p) | The distance between two vectors (two points) (The relative distance from self to p) |
anglebetween (a, b) | The angle between two vectors (two points) (The relative angle from self to v) |
Functions
- vec2 (x, y)
-
Create a new vector with components x, y:
(Can also be used to duplicate a vector: vec2(v))
Parameters:
- x number or vector (optional, default 0)
- y number (optional, default 0)
- copy (v)
-
Create a copy of a vector:
Parameters:
- v vector
- vec2:set (x, y)
-
Set the components of a vector:
Parameters:
- x component
- y component
Returns:
-
self
- fromAngle (angle)
-
Create a unit (length 1) vector from an angle
Parameters:
- angle in radians
- fromPolar (length, angle)
-
Create a vector from a polar form length and angle
Parameters:
- length magnitude
- angle in radians
- vec2:add (v)
-
Add a vector (or number) to self (in-place)
Parameters:
- v number or vector to add
Returns:
-
self
- addnew (a, b)
-
Add two vectors (or numbers) to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:sub (v)
-
Subtract a vector (or number) to self (in-place)
Parameters:
- v number or vector to sub
Returns:
-
self
- subnew (a, b)
-
Subtract two vectors (or numbers) to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:mul (v)
-
Multiply a vector (or number) to self (in-place)
Parameters:
- v number or vector to mul
Returns:
-
self
- mulnew (a, b)
-
Multiply two vectors (or numbers) to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:div (v)
-
Divide a vector (or number) to self (in-place)
Parameters:
- v number or vector to div
Returns:
-
self
- divnew (a, b)
-
Divide two vectors (or numbers) to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:pow (v)
-
Raise to power a vector (or number) to self (in-place)
Parameters:
- v number or vector to pow
Returns:
-
self
- pownew (a, b)
-
Raise to power two vectors (or numbers) to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:mod (v)
-
Calculate modulo a vector (or number) to self (in-place)
Parameters:
- v number or vector to mod
Returns:
-
self
- modnew (a, b)
-
Calculate modulo two vectors (or numbers) to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:min (v)
-
Calculate minimum of elements (in-place)
Parameters:
- v number or vector limit
Returns:
-
self
- minnew (a, b)
-
Calculate minimum of elements to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:max (v)
-
Calculate maximum of elements (in-place)
Parameters:
- v number or vector limit
Returns:
-
self
- maxnew (a, b)
-
Calculate maximum of elements to create a new vector
Parameters:
- a vector or number
- b vector or number
Returns:
-
new vector
- vec2:clip (lo, hi)
-
Constrain vector to range (in-place)
Parameters:
- lo vector or number minimum value
- hi vector or number minimum value
Returns:
-
self
- vec2:clip (lo, hi)
-
Constrain vector to range to create a new vector
Parameters:
- lo vector or number minimum value
- hi vector or number minimum value
Returns:
-
new vector
- vec2:relativewrap (dimx, dimy)
-
Determine shortest relative vector in a toroidal space
Parameters:
- dimx width of space (optional, default 1)
- dimy height of space (optional, default dimx)
Returns:
-
self
- vec2:relativewrapnew (dimx, dimy)
-
Create new vector as shortest relative vector in a toroidal space
Parameters:
- dimx width of space (optional, default 1)
- dimy height of space (optional, default dimx)
Returns:
-
new vector
- vec2:lerp (v, f)
-
interpolate from self to v by factor of f
Parameters:
- v vector
- f interpolation factor from self to v (0 = none, 1 = full)
Returns:
-
self
- lerpnew (a, b, f)
-
create a vector from the linear interpolation of two vectors:
Parameters:
- a vector
- b vector
- f interpolation factor from a to b (0 = none, 1 = full)
Returns:
-
new vector
- vec2:normalize ()
-
set the length of the vector to 1 (unit vector)
(randomized direction if self length was zero)
Returns:
-
self
- vec2:normalizenew ()
-
return a normalized copy of the vector
(randomized direction if self length was zero)
Returns:
-
vector of length 1 (unit vector)
- vec2:limit (maximum)
-
Impose a maximum magnitude
Rescales vector if greater than maximum
Parameters:
- maximum maximum magnitude of vector
Returns:
-
self
- vec2:limitnew (maximum)
-
Create a copy of a vector, limited to a maximum magnitude
Rescales vector if greater than maximum
Parameters:
- maximum maximum magnitude of vector
Returns:
-
new vector
- vec2:setangle (a)
-
Rotate a vector to a specific angle:
Parameters:
- a new angle
Returns:
-
self
- vec2:setanglenew (a)
-
Return a copy rotated to a specific angle:
Parameters:
- a new angle
Returns:
-
new vector
- vec2:setmag (m)
-
Rescale a vector to a specific magnitude:
Parameters:
- m new magnitude
Returns:
-
self
- vec2:setmagnew (m)
-
Return a vector copy rescaled to a specific magnitude:
Parameters:
- m new magnitude
Returns:
-
new vector
- vec2:rotate (angle)
-
Rotate a vector by an angle
Parameters:
- angle in radians
Returns:
-
self
- vec2:rotatenew (angle)
-
Create a vector by rotating a vector by an angle
Parameters:
- angle in radians
Returns:
-
new vector
- random (mag)
-
Create a new vector in a uniformly random direction:
Parameters:
- mag magnitude (optional, default 1)
Returns:
-
new vector
- vec2:randomize (mag)
-
Set to a vector of magnitude 1 in a uniformly random direction:
Parameters:
- mag magnitude (optional, default 1)
Returns:
-
self
- vec2:length ()
-
return the length of a vector
(Can also use #vector)
Returns:
-
length
- vec2:angle ()
-
Return the angle to the vector (direction)
Returns:
-
angle (in radians)
- vec2:polar ()
-
Return the magnitude and angle (polar form):
Returns:
-
length, angle (in radians)
- dot (a, b)
-
return the dot product of two vectors:
Parameters:
- a vector
- b vector
Returns:
-
dot product
- vec2:distance (p)
-
The distance between two vectors (two points)
(The relative distance from self to p)
Parameters:
- p target to measure distance to
Returns:
-
distance
- anglebetween (a, b)
-
The angle between two vectors (two points)
(The relative angle from self to v)
Parameters:
- a vector to measure angle between
- b vector to measure angle between
Returns:
-
distance