| Create |
v = vector2() -- (0,0) : default constructor
v = vector2(1.5, -3) -- (x,y) : value constructor
u = vector2(v)
-- with rotate, seen later bellow
l = 1
angle = 0.5
v = vector2(l, 0):rotate(angle)
|
| Access |
v = vector2(3, 4)
-- read
log("v.x = " .. v.x)
log("v.y = " .. v.y)
log("v = " .. tostring(v))
-- write
v.x = 10
v.y = -2
|
| Operators |
a = vector2(1, 2)
b = vector2(3, 4)
s = a + b -- addition
d = a - b -- subtraction
-- scalar multiplication
k1 = a * 10
-- equality
v = vector2(1, 2)
w = vector2(1, 2)
z = vector2(2, 1)
log(v == w) -- true
log(v == z) -- false
|
| Length |
v = vector2(3, 4)
log(v:length()) -- 5
|
| Normalize (in-place) |
v = vector2(3, 4)
v:normalize()
log(v:length()) -- ~1
|
| Dot product |
a = vector2(1, 0)
b = vector2(0, 1)
d = a:dot(b)
log(d) -- 0
|
| Cross product |
a = vector2(1, 0)
b = vector2(0, 1)
a:cross(b) -- 'a' is now modified
-- if you want to keep 'a' unchanged:
a = vector2(1, 0)
c = vector2(a):cross(b) -- cross on a copy
|
| Rotate (in-place, radians) |
v = vector2(1, 0)
v:rotate(math.pi / 2) -- ~ (0,1)
|