def is_higher_than_start_by_bounding_xs(self, start: Point, finish: Point) -> bool: slope = get_slope(start, finish) for delta_y in get_deltas_between(start.y, finish.y): delta_x_1 = floor(delta_y / slope) delta_x_2 = ceil(delta_y / slope) if self.map.get_elevation(start.plus( delta_x_1, delta_y)) > self.map.get_elevation(start): return True if self.map.get_elevation(start.plus( delta_x_2, delta_y)) > self.map.get_elevation(start): return True return False
def is_higher_than_start_by_bounding_ys(self, start: Point, finish: Point) -> bool: """ use floor and ceil """ slope = get_slope(start, finish) for delta_x in get_deltas_between(start.x, finish.x): delta_y_1 = floor(slope * delta_x) delta_y_2 = ceil(slope * delta_x) if self.map.get_elevation(start.plus( delta_x, delta_y_1)) > self.map.get_elevation(start): return True if self.map.get_elevation(start.plus( delta_x, delta_y_2)) > self.map.get_elevation(start): return True return False