Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function vector(x, y, z)
- local v = {
- x = x or 0,
- y = y or 0,
- z = z or 0,
- __add = function (o)
- return vector(
- x + o.x,
- y + o.y,
- z + o.z
- )
- end,
- __sub = function (o)
- return vector(
- x - o.x,
- y - o.y,
- z - o.z
- )
- end,
- __mul = function (o)
- return vector(
- x * o.x,
- y * o.y,
- z * o.z
- )
- end,
- dot = function(o)
- return x*o.x + y*o.y + z*o.z
- end,
- cross = function(o)
- return vector(
- y*o.z - z*o.y,
- z*o.x - x*o.z,
- x*o.y - y*o.x
- )
- end,
- __len = function()
- return math.sqrt( x*x + y*y + z*z )
- end,
- round = function()
- return vector(
- math.floor( x + 0.5 ),
- math.floor( y + 0.5 ),
- math.floor( z + 0.5 )
- )
- end,
- __tostring = function()
- return x..","..y..","..z
- end,
- __eq = function (o)
- return x == o.x and y == o.y and z == o.z
- end
- }
- function v.__unm()
- return v.mul(-1)
- end
- function v.normalize()
- return v.mul( 1 / v.length() )
- end
- v.add = v.__add
- v.subtract = v.__sub
- v.sub = v.__sub
- v.multiply = v.__mul
- v.mul = v.__mul
- v.length = v.__len
- v.len = v.__len
- v.tostring = v.__tostring
- v.equals = v.__eq
- v.eq = v.__eq
- v.__metatable = v
- function v.__newindex()
- end
- return setmetatable(v, v)
- end
Advertisement
Add Comment
Please, Sign In to add comment