def generate_cars(init_positions=None, n_cars=None, color=(20, 160, 140, 100), radius_car=16, map_size=None, d2d=True): """Genera los autos :param init_positions: vector de posiciones iniciales :param n_cars: número de autos :param color: color de los autos :param radius_car: radio de los autos :param map_size: tamaño del mapa :param d2d: D2D flag :return: """ if map_size is None: map_size = [1024, 720] cars = Group(prefix="C") # Grupo de carros rand_centers = random.sample(init_positions, n_cars) i = 1 for position in rand_centers: cars.add( Car(x=position[0], y=position[1], Id="C" + str(i), color=color, radius=radius_car, map_size=map_size, d2d=d2d, indx=i)) i += 1 return cars
def generate_fc(init_positions=None, n_fc=None, radius_fc=None, color=(80, 120, 50, 128)): """Generar Femto celdas :param init_positions: posiciones iniciales :param n_fc: número de femtoceldas :param radius_fc: radio de femtocelda :param color: tuple color for femtocells :return: """ if not isinstance(init_positions, np.ndarray): init_positions = np.array(init_positions) fcs = Group(prefix="F") # Grupo de femtoceldas m, n, _ = init_positions.shape space_between_fc = 4 indx = 0 pos_y = [i for i in range(m) if i % 4 == 0] pos_x = [i + 1 for i in range(n) if i % 4 == 0] for i in pos_x: for j in pos_y: if indx < n_fc: position = init_positions[j + 1, i] fcs.add( Femtocell(*position, radius=radius_fc, color=color, Id="FC" + str(indx + 1), indx=indx)) indx += 1 return fcs
def build_city(width=1280, height=720, edificesColor=(10, 200, 50)): """Contruye una ciudad con edificios Args: """ # Para construir la Ciudad D = 8 # Separación entre calles (px) w = 51 # Ancho de los edificiós (px) h = 51 # Largo (altura rectangular) de los edificios (px) W = 1024 # Ancho del mapa (px) H = 720 # Largo del mapa (px) # Calcular número de edificios m = int(W / w) # ¿Cuántos edificios caben a lo ancho del mapa? n = int(H / h) # ¿Cuántos edificios caben a lo largo del mapa? edifices = Group(prefix="Edifice") # Grupo de paredes centers_corner = [] # Esquina centers_street = [] # Centro calle offset_x = 5 offset_y = 5 rows = [] # Contruir ciudad for i in range(m): for j in range(n): x = int(i * w + offset_x) y = int(j * h + offset_y) edifices.add(Edifice(x, y, w - D, h - D, color=edificesColor)) rows.append([x + w, y + h]) centers_street.append([x + w - int(D / 2), y + h - int(D / 2)]) centers_corner.append(rows) rows = [] # centers_corner = np.array(centers_corner, dtype='uint8') centers_corner = np.array(centers_corner) return edifices, centers_corner, centers_street