Commit 2fa000a1 authored by Joseph Siddons's avatar Joseph Siddons
Browse files

Merge branch 'add-tree-len' into 'main'

Add length method to QuadTree and OctTree

See merge request nocsurfaceprocesses/geospatialtools!19
parents bff58394 cf62e59a
...@@ -461,6 +461,24 @@ class OctTree: ...@@ -461,6 +461,24 @@ class OctTree:
out += f"{self.southeastfwd}" out += f"{self.southeastfwd}"
return out return out
def len(self, _current_len: int = 0) -> int:
"""Get the number of points in the OctTree"""
_current_len += len(self.points)
print(_current_len)
if not self.divided:
return _current_len
_current_len = self.northeastback.len(_current_len)
_current_len = self.northwestback.len(_current_len)
_current_len = self.southeastback.len(_current_len)
_current_len = self.southwestback.len(_current_len)
_current_len = self.northeastfwd.len(_current_len)
_current_len = self.northwestfwd.len(_current_len)
_current_len = self.southeastfwd.len(_current_len)
_current_len = self.southwestfwd.len(_current_len)
return _current_len
def divide(self): def divide(self):
"""Divide the QuadTree""" """Divide the QuadTree"""
self.northwestfwd = OctTree( self.northwestfwd = OctTree(
......
...@@ -340,6 +340,19 @@ class QuadTree: ...@@ -340,6 +340,19 @@ class QuadTree:
out += f"{self.southeast}" out += f"{self.southeast}"
return out return out
def len(self, _current_len: int = 0) -> int:
"""Get the number of points in the OctTree"""
_current_len += len(self.points)
if not self.divided:
return _current_len
_current_len = self.northeast.len(_current_len)
_current_len = self.northwest.len(_current_len)
_current_len = self.southeast.len(_current_len)
_current_len = self.southwest.len(_current_len)
return _current_len
def divide(self): def divide(self):
"""Divide the QuadTree""" """Divide the QuadTree"""
self.northwest = QuadTree( self.northwest = QuadTree(
......
...@@ -198,6 +198,7 @@ class TestOctTree(unittest.TestCase): ...@@ -198,6 +198,7 @@ class TestOctTree(unittest.TestCase):
] ]
for point in points: for point in points:
otree.insert(point) otree.insert(point)
assert otree.len() == len(points) - 1 # NOTE: 1 point not added
assert otree.divided assert otree.divided
expected = [ expected = [
points[:3], points[:3],
......
...@@ -94,6 +94,7 @@ class TestQuadTree(unittest.TestCase): ...@@ -94,6 +94,7 @@ class TestQuadTree(unittest.TestCase):
for point in points: for point in points:
qtree.insert(point) qtree.insert(point)
assert qtree.divided assert qtree.divided
assert qtree.len() == len(points)
res = [ res = [
qtree.points, qtree.points,
qtree.northwest.points, qtree.northwest.points,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment