diff options
Diffstat (limited to 'pos.lua')
-rw-r--r-- | pos.lua | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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 |