Fixed inverted rows/cols

This commit is contained in:
Jan Mrna 2025-09-19 13:10:00 +02:00
parent 0fed363dd2
commit a9be2e5bbc

View File

@ -22,14 +22,16 @@ class Map:
""" """
2D map consisting of cells with given cost 2D map consisting of cells with given cost
""" """
# TODO fix x, y vs rows, cols # array not defined as private, as plotting utilities work with it directly
array: np.array array: np.array
_visited_nodes: int _visited_nodes: int
def __init__(self, width: int, height: int) -> None: def __init__(self, width: int, height: int) -> None:
assert width > 0 assert width > 0
assert height > 0 assert height > 0
self.array = np.zeros((width, height), dtype=np.float64) rows = height
cols = width
self.array = np.zeros((rows, cols), dtype=np.float64)
self._visited_nodes = 0 self._visited_nodes = 0
def Randomize(self, low: float = 0.0, high: float = 1.0) -> None: def Randomize(self, low: float = 0.0, high: float = 1.0) -> None:
@ -37,7 +39,7 @@ class Map:
def IsPointValid(self, point: Point2D) -> bool: def IsPointValid(self, point: Point2D) -> bool:
x, y = point x, y = point
x_max, y_max = self.array.shape y_max, x_max = self.array.shape
x_in_bounds = (0 <= x < x_max) x_in_bounds = (0 <= x < x_max)
y_in_bounds = (0 <= y < y_max) y_in_bounds = (0 <= y < y_max)
return x_in_bounds and y_in_bounds return x_in_bounds and y_in_bounds
@ -55,7 +57,9 @@ class Map:
if not self.IsPointValid(point): if not self.IsPointValid(point):
raise ValueError("Point out of bounds") raise ValueError("Point out of bounds")
self._visited_nodes += 1 self._visited_nodes += 1
return self.array[point] x, y = point
row, col = y, x
return self.array[(row, col)]
class PathFinder(Protocol): class PathFinder(Protocol):
@ -154,7 +158,7 @@ class BFS:
def main(): def main():
# Define the map and start/stop points # Define the map and start/stop points
m = Map(10, 10) m = Map(15, 10)
m.Randomize() m.Randomize()
starting_point: Point2D = (0,0) starting_point: Point2D = (0,0)
end_point: Point2D = (9,9) end_point: Point2D = (9,9)