From 41c723ffd7dd16cc91fcc978db0921e15e922b57 Mon Sep 17 00:00:00 2001
From: u229589 <christian.baumberger@sbb.ch>
Date: Fri, 4 Oct 2019 14:47:18 +0200
Subject: [PATCH] remove quick_path

---
 flatland/core/grid/grid4_utils.py       | 28 ------------
 flatland/envs/grid4_generators_utils.py | 61 +------------------------
 2 files changed, 1 insertion(+), 88 deletions(-)

diff --git a/flatland/core/grid/grid4_utils.py b/flatland/core/grid/grid4_utils.py
index 79bf0873..1475589e 100644
--- a/flatland/core/grid/grid4_utils.py
+++ b/flatland/core/grid/grid4_utils.py
@@ -58,31 +58,3 @@ def direction_to_point(pos1: IntVector2D, pos2: IntVector2D) -> Grid4Transitions
             return Grid4TransitionsEnum.WEST
         else:
             return Grid4TransitionsEnum.EAST
-
-
-def directions_of_vector(pos1: IntVector2D, pos2: IntVector2D) -> (Grid4TransitionsEnum, Grid4TransitionsEnum):
-    diff_vec = np.array((pos1[0] - pos2[0], pos1[1] - pos2[1]))
-    axis = np.argmax(np.power(diff_vec, 2))
-    direction = np.sign(diff_vec)
-    if axis == 0:
-        if direction[0] > 0:
-            if direction[1] > 0:
-                return Grid4TransitionsEnum.NORTH, Grid4TransitionsEnum.WEST
-            else:
-                return Grid4TransitionsEnum.NORTH, Grid4TransitionsEnum.EAST
-        else:
-            if direction[1] > 0:
-                return Grid4TransitionsEnum.SOUTH, Grid4TransitionsEnum.WEST
-            else:
-                return Grid4TransitionsEnum.SOUTH, Grid4TransitionsEnum.EAST
-    else:
-        if direction[1] > 0:
-            if direction[0] > 0:
-                return Grid4TransitionsEnum.WEST, Grid4TransitionsEnum.NORTH
-            else:
-                return Grid4TransitionsEnum.WEST, Grid4TransitionsEnum.SOUTH
-        else:
-            if direction[0] > 0:
-                return Grid4TransitionsEnum.EAST, Grid4TransitionsEnum.NORTH
-            else:
-                return Grid4TransitionsEnum.EAST, Grid4TransitionsEnum.SOUTH
diff --git a/flatland/envs/grid4_generators_utils.py b/flatland/envs/grid4_generators_utils.py
index 9736e566..3944b6d0 100644
--- a/flatland/envs/grid4_generators_utils.py
+++ b/flatland/envs/grid4_generators_utils.py
@@ -9,8 +9,7 @@ import numpy as np
 
 from flatland.core.grid.grid4 import Grid4TransitionsEnum
 from flatland.core.grid.grid4_astar import a_star
-from flatland.core.grid.grid4_utils import get_direction, mirror, get_new_position, directions_of_vector, \
-    direction_to_point
+from flatland.core.grid.grid4_utils import get_direction, mirror, direction_to_point
 from flatland.core.grid.grid_utils import IntVector2D, IntVector2DDistance, IntVector2DArray
 from flatland.core.grid.grid_utils import Vec2dOperations as Vec2d
 from flatland.core.transition_map import GridTransitionMap, RailEnvTransitions
@@ -38,7 +37,6 @@ def connect_rail_in_grid_map(grid_map: GridTransitionMap, start: IntVector2D, en
 
     path: IntVector2DArray = a_star(grid_map, start, end, a_star_distance_function, respect_transition_validity,
                                     forbidden_cells)
-    # path:  IntVector2DArray = quick_path(grid_map, start, end, forbidden_cells=forbidden_cells)
     if len(path) < 2:
         print("No path found", path)
         return []
@@ -128,60 +126,3 @@ def connect_straight_line_in_grid_map(grid_map: GridTransitionMap, start: IntVec
         grid_map.grid[cell] = transition
 
     return path
-
-
-def quick_path(grid_map: GridTransitionMap, start: IntVector2D, end: IntVector2D,
-               forbidden_cells: IntVector2DArray = None) -> IntVector2DArray:
-    """
-    Quick path connecting algorithm with simple heuristic to always follow largest value of vector towards target.
-    When obstacle is encountered second direction of vector is chosen.
-    """
-    (height, width) = np.shape(grid_map.grid)
-
-    def _next_legal_step(position, old_direction, target):
-        if old_direction is not None:
-            mirror_direction = Grid4TransitionsEnum(mirror(old_direction))
-        else:
-            mirror_direction = 4
-
-        closest_direction, second_closest_direction = directions_of_vector(current_cell, target)
-
-        if closest_direction == mirror_direction:
-            closest_direction = second_closest_direction
-
-        next_position = get_new_position(position, closest_direction)
-        direction_tries = 1
-
-        # Necessary to overcome city boarder
-        if next_position == target:
-            return next_position, closest_direction
-
-        while (not np.array_equal(next_position, np.clip(next_position, [0, 0], [height - 1, width - 1])) or
-               (forbidden_cells is not None and next_position in forbidden_cells)):
-
-            if direction_tries > 1:
-                closest_direction = (closest_direction + 1) % 4
-                if closest_direction == mirror_direction:
-                    closest_direction = (closest_direction + 1) % 4
-                if direction_tries > 3:
-                    return None, None
-            else:
-                closest_direction = second_closest_direction
-                if closest_direction == mirror_direction:
-                    closest_direction = (closest_direction + 1) % 4
-
-            next_position = get_new_position(position, closest_direction)
-            direction_tries += 1
-        return next_position, closest_direction
-
-    current_cell = start
-    path = [current_cell]
-    current_direction = None
-
-    while current_cell != end:
-        current_cell, current_direction = _next_legal_step(current_cell, current_direction, end)
-
-        if current_cell is not None:
-            path.append(current_cell)
-
-    return path
-- 
GitLab