diff options
Diffstat (limited to 'city/geometry.lua')
-rw-r--r-- | city/geometry.lua | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/city/geometry.lua b/city/geometry.lua index 1632393..13088d1 100644 --- a/city/geometry.lua +++ b/city/geometry.lua @@ -47,6 +47,9 @@ geom.square = class{ axis_range = function(c, r) return {min=c-r, max=c+r} end, + -- returns true if a point is inside of the square + -- and false otherwise + -- (x/y mininum exclusive, maximum inclusive) contains = function(self, point) local x_overlap = (point.x > self.x.min) and (point.x <= self.x.max) @@ -57,6 +60,23 @@ geom.square = class{ return true end return false + end, + + -- return an array of four squares covering the same + -- area as their parent + divide = function(self) + local this = getmetatable(self).__index + + local x = self.center.x + local y = self.center.y + local d = self.span / 4 + + return { + this(geom.point(x-d, y-d), d*2), + this(geom.point(x+d, y-d), d*2), + this(geom.point(x-d, y+d), d*2), + this(geom.point(x+d, y+d), d*2), + } end } |