Skip to content

Commit 97c177c

Browse files
committed
Better Lua vectors
1 parent b664071 commit 97c177c

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

lua/vectors.lua

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1-
Vector = (function (class, meta, prototype)
1+
Vector = (function (class)
2+
local meta = {
3+
__add = function(self, v)
4+
return class.new(self.i + v.i, self.j + v.j)
5+
end,
6+
__mul = function(self, v)
7+
return self.i * v.i + self.j * v.j
8+
end,
9+
__tostring = function(self)
10+
return string.format("<%g,%g>", self.i, self.j)
11+
end,
12+
__index = {
13+
magnitude = function(self)
14+
return math.sqrt(self.i * self.i + self.j * self.j)
15+
end
16+
},
17+
}
18+
219
class.new = function (i, j)
320
return setmetatable({i = i, j = j}, meta)
421
end
522

6-
prototype.magnitude = function (self)
7-
return math.sqrt(self.i * self.i + self.j * self.j)
8-
end
9-
10-
meta.__index = prototype
11-
12-
meta.__add = function (self, v)
13-
return class.new(self.i + v.i, self.j + v.j)
14-
end
15-
16-
meta.__mul = function (self, v)
17-
return self.i * v.i + self.j * v.j
18-
end
19-
20-
meta.__tostring = function (self)
21-
return string.format('<%g,%g>', self.i, self.j)
22-
end
23-
2423
return class
25-
end)({}, {}, {})
24+
end)({})
2625

2726
u = Vector.new(3, 4)
2827
v = Vector.new(-5, 10)
2928
assert(tostring(u) == "<3,4>")
3029
assert(tostring(v) == "<-5,10>")
30+
assert(u.i == 3)
3131
assert(u.j == 4)
3232
assert(u:magnitude() == 5.0)
3333
assert(tostring(u + v) == "<-2,14>")

0 commit comments

Comments
 (0)