From de18a43477c19691a198d987b120ed82270d0ed9 Mon Sep 17 00:00:00 2001 From: ubq323 Date: Thu, 5 Jun 2025 16:04:25 +0100 Subject: pos: add l1 linf floor ceil divmod key unkey --- pos.lua | 9 +++++++++ 1 file changed, 9 insertions(+) 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 -- cgit v1.2.3