summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorubq323 <ubq323@ubq323.website>2025-06-05 16:04:25 +0100
committerubq323 <ubq323@ubq323.website>2025-06-05 16:04:25 +0100
commitde18a43477c19691a198d987b120ed82270d0ed9 (patch)
tree1f673b6b041b669cd0da9bb7652bcf9d0784eb88
parent2d04580e0ec8978cfcd817171086f80ceb566e7b (diff)
pos: add l1 linf floor ceil divmod key unkey
-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