summaryrefslogtreecommitdiff
path: root/pos.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pos.lua')
-rw-r--r--pos.lua9
1 files changed, 9 insertions, 0 deletions
diff --git a/pos.lua b/pos.lua
index a3343ee..18d559b 100644
--- a/pos.lua
+++ b/pos.lua
@@ -36,11 +36,20 @@ function Pos.__eq(a,b) return a.x==b.x and a.y==b.y end
function Pos.lensq(self) return self.x^2 + self.y^2 end
function Pos.len(self) return math.sqrt(self:lensq()) end
function Pos.norm(self) return self/self:len() end
+function Pos.l1(self) return math.abs(self.x) + math.abs(self.y) end
+function Pos.linf(self) return math.max(math.abs(self.x),math.abs(self.y)) end
function Pos.dot(self,other) return self.x*other.x+self.y*other.y end
function Pos.vals(self) return self.x, self.y end
+function Pos.floor(self) return Pos:make(math.floor(self.x),math.floor(self.y)) end
+function Pos.ceil(self) return Pos:make(math.ceil(self.x),math.ceil(self.y)) end
+function Pos.divmod(self,size) local div = (self/size):floor() return div, self-div*size end
function Pos.__tostring(self)
return string.format("(%.2f,%.2f)",self.x,self.y)
end
+function Pos.key(self) return self.x .. ':' .. self.y end
+function Pos.unkey(cls,k)
+ local a,b = k:match"(%-?%d+):(%-?%d+)"
+ return Pos(tonumber(a),tonumber(b)) end
return Pos