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 !19
parents bff58394 cf62e59a
......@@ -461,6 +461,24 @@ class OctTree:
out += f"{self.southeastfwd}"
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):
"""Divide the QuadTree"""
self.northwestfwd = OctTree(
......
......@@ -340,6 +340,19 @@ class QuadTree:
out += f"{self.southeast}"
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):
"""Divide the QuadTree"""
self.northwest = QuadTree(
......
......@@ -198,6 +198,7 @@ class TestOctTree(unittest.TestCase):
]
for point in points:
otree.insert(point)
assert otree.len() == len(points) - 1 # NOTE: 1 point not added
assert otree.divided
expected = [
points[:3],
......
......@@ -94,6 +94,7 @@ class TestQuadTree(unittest.TestCase):
for point in points:
qtree.insert(point)
assert qtree.divided
assert qtree.len() == len(points)
res = [
qtree.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