MPI Artificial Intelligence for robots and swarms

Reference Vector


Home
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)