diff options
author | ubq323 <ubq323@ubq323.website> | 2025-06-05 16:04:25 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2025-06-05 16:04:25 +0100 |
commit | de18a43477c19691a198d987b120ed82270d0ed9 (patch) | |
tree | 1f673b6b041b669cd0da9bb7652bcf9d0784eb88 | |
parent | 2d04580e0ec8978cfcd817171086f80ceb566e7b (diff) |
pos: add l1 linf floor ceil divmod key unkey
-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 |