示例#1
0
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
示例#2
0
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
示例#3
0
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