def plot_map(m, screen, scale=None, color=(0, 0, 0), width=2): if not scale: xmax, ymax = np.array([(abs(outer.real), abs(outer.imag)) for inner, outer in m]).max(axis=0) scale = ceil(xmax) + ceil(ymax) * 1j size = screen.get_width(), screen.get_height() from cars.utils import to_px points = np.array([[to_px(inner, scale, size), to_px(outer, scale, size)] for inner, outer in m]) import pygame pygame.draw.polygon(screen, color, points[:, 0], width) pygame.draw.polygon(screen, color, points[:, 1], width) return scale
def plot_map(m, screen, scale=None, color=(0, 0, 0), width=2): if not scale: xmax, ymax = np.array([(abs(outer.real), abs(outer.imag)) for inner, outer in m]).max(axis=0) scale = ceil(xmax) + ceil(ymax) * 1j size = screen.get_width(), screen.get_height() from cars.utils import to_px points = np.array([[to_px(inner, scale, size), to_px(outer, scale, size)] for inner, outer in m]) import pygame pygame.draw.polygon(screen, color, points[:, 0], width) pygame.draw.polygon(screen, color, points[:, 1], width) return scale
def _draw_ladar(self, sensors, state, scale): surface = pygame.display.get_surface().copy() surface.fill(white) surface.set_colorkey(white) start_pos = to_px(state.position, scale, surface.get_size()) delta = pi / (len(sensors) - 1) ray = phase(state.heading) - pi / 2 for s in sensors: end_pos = to_px(rect(s, ray) + state.position, scale, surface.get_size()) pygame.draw.line(surface, (0, 255, 0), start_pos, end_pos, 2) ray += delta rectangle = surface.get_rect() rectangle.topleft = (0, 0) return surface, rectangle
def _draw_ladar(self, sensors, state, scale): surface = pygame.display.get_surface().copy() surface.fill(white) surface.set_colorkey(white) start_pos = to_px(state.position, scale, surface.get_size()) delta = pi / (len(sensors) - 1) ray = phase(state.heading) - pi / 2 for s in sensors: end_pos = to_px(rect(s, ray) + state.position, scale, surface.get_size()) pygame.draw.line(surface, (0, 255, 0), start_pos, end_pos, 2) ray += delta rectangle = surface.get_rect() rectangle.topleft = (0, 0) return surface, rectangle
def _get_agent_image(self, original, state, scale): angle = phase(state.heading) * 180 / pi rotated = pygame.transform.rotate(original, angle) rectangle = rotated.get_rect() rectangle.center = to_px(state.position, scale, self.size) return rotated, rectangle
def _get_agent_image(self, original, state, scale): angle = phase(state.heading) * 180 / pi rotated = pygame.transform.rotate(original, angle) rectangle = rotated.get_rect() rectangle.center = to_px(state.position, scale, self.size) return rotated, rectangle