Add sanity checks to vector functions
authorShadowNinja <noreply@gmail.com>
Mon, 16 Sep 2013 02:47:39 +0000 (22:47 -0400)
committerPerttu Ahola <celeron55@gmail.com>
Thu, 17 Oct 2013 06:42:57 +0000 (09:42 +0300)
builtin/vector.lua

index 7faa2c17dc922cbbb7078a58b0fbd02c1ad45c0b..698309c4ac20055875daeef9d04d85df4c161d46 100644 (file)
@@ -2,25 +2,30 @@
 vector = {}
 
 function vector.new(a, b, c)
+       assert(a)
        if type(a) == "table" then
                return {x=a.x, y=a.y, z=a.z}
-       elseif a and b and c then
+       else
+               assert(b and c)
                return {x=a, y=b, z=c}
        end
        return {x=0, y=0, z=0}
 end
 
 function vector.equals(a, b)
+       assert(a and b)
        return a.x == b.x and
               a.y == b.y and
               a.z == b.z
 end
 
 function vector.length(v)
+       assert(v)
        return math.hypot(v.x, math.hypot(v.y, v.z))
 end
 
 function vector.normalize(v)
+       assert(v)
        local len = vector.length(v)
        if len == 0 then
                return vector.new()
@@ -30,6 +35,7 @@ function vector.normalize(v)
 end
 
 function vector.round(v)
+       assert(v)
        return {
                x = math.floor(v.x + 0.5),
                y = math.floor(v.y + 0.5),
@@ -38,6 +44,7 @@ function vector.round(v)
 end
 
 function vector.distance(a, b)
+       assert(a and b)
        local x = a.x - b.x
        local y = a.y - b.y
        local z = a.z - b.z
@@ -45,6 +52,7 @@ function vector.distance(a, b)
 end
 
 function vector.direction(pos1, pos2)
+       assert(pos1 and pos2)
        local x_raw = pos2.x - pos1.x
        local y_raw = pos2.y - pos1.y
        local z_raw = pos2.z - pos1.z
@@ -74,6 +82,7 @@ end
 
 
 function vector.add(a, b)
+       assert(a and b)
        if type(b) == "table" then
                return {x = a.x + b.x,
                        y = a.y + b.y,
@@ -86,6 +95,7 @@ function vector.add(a, b)
 end
 
 function vector.subtract(a, b)
+       assert(a and b)
        if type(b) == "table" then
                return {x = a.x - b.x,
                        y = a.y - b.y,
@@ -98,6 +108,7 @@ function vector.subtract(a, b)
 end
 
 function vector.multiply(a, b)
+       assert(a and b)
        if type(b) == "table" then
                return {x = a.x * b.x,
                        y = a.y * b.y,
@@ -110,6 +121,7 @@ function vector.multiply(a, b)
 end
 
 function vector.divide(a, b)
+       assert(a and b)
        if type(b) == "table" then
                return {x = a.x / b.x,
                        y = a.y / b.y,