diff --git a/sys/apis/point.lua b/sys/apis/point.lua index 1d83eab..f36933b 100644 --- a/sys/apis/point.lua +++ b/sys/apis/point.lua @@ -189,6 +189,8 @@ function Point.closest(reference, pts) end function Point.eachClosest(spt, ipts, fn) + if not ipts then error('Point.eachClosest: invalid points', 2) end + local pts = Util.shallowCopy(ipts) while #pts > 0 do local pt = Point.closest(spt, pts) @@ -200,6 +202,17 @@ function Point.eachClosest(spt, ipts, fn) end end +function Point.iterateClosest(spt, ipts) + local pts = Util.shallowCopy(ipts) + return function() + local pt = Point.closest(spt, pts) + if pt then + Util.removeByValue(pts, pt) + return pt + end + end +end + function Point.adjacentPoints(pt) local pts = { }