fogón

← BásicoObjeto 3Dfogon/parada-de-colectivo

Parada de colectivo

de fogonCC014891 bloques
Parada de colectivoArrastrá para girarlo
// «Parada de colectivo» · gpt-6-sol (medium)
// Bus shelter («Parada de colectivo»).

const C = {
  curb: "#626c6e", curbLight: "#879292",
  grout: "#b8c5c4", tile: "#e0e7e3", tileAlt: "#d4deda",
  frame: "#253d46", frameLight: "#49646a",
  glass: "#79949a", glassLight: "#a7bab9",
  roofDark: "#205568", roof: "#327c91", roofLight: "#438da0",
  woodDark: "#99591f", wood: "#c98532", woodLight: "#efac4d",
  metal: "#718384", white: "#eaf0df", yellow: "#f2c83e"
};

// Raised sidewalk and dark curb.
box(2, 4, 0, 45, 41, 2, C.curb);
box(3, 7, 3, 44, 40, 3, C.grout);
box(2, 4, 2, 45, 6, 2, C.curbLight);
box(8, 4, 3, 39, 4, 3, C.yellow);
box(8, 5, 3, 39, 5, 3, "#b99c37");

// Large square paving slabs, separated by visible joints.
for (let x = 4; x <= 43; x += 6) {
  for (let y = 8; y <= 39; y += 6) {
    const shade = rand() < 0.28 ? C.tileAlt : C.tile;
    box(x, y, 3, Math.min(x + 4, 44), Math.min(y + 4, 40), 3, shade);
    if (rand() < 0.28) {
      set(x + 2, y + 2, 3, "#e9eeea");
    }
  }
}

// Left enclosed end: charcoal posts around blue-gray glass.
box(9, 15, 4, 11, 33, 30, C.frame);
box(11, 17, 7, 11, 31, 28, C.glass);
box(9, 17, 7, 9, 31, 28, "#586f77");
box(9, 15, 4, 12, 16, 31, C.frame);
box(9, 32, 4, 12, 34, 31, C.frame);
box(9, 15, 5, 12, 34, 6, "#344b51");
box(9, 17, 27, 9, 29, 28, "#77959c");
line(10, 18, 27, 10, 28, 9, 0, "#9ab1b2");

// Back panels and their strong vertical framing.
box(12, 32, 6, 34, 33, 30, C.frame);
box(13, 31, 9, 26, 31, 28, "#c7bea3");
box(27, 31, 8, 32, 31, 28, C.glassLight);
box(27, 30, 10, 27, 30, 27, "#bfd0ca");
box(31, 30, 10, 31, 30, 27, "#bdcfca");
box(12, 30, 5, 13, 34, 31, C.frame);
box(33, 29, 4, 35, 34, 31, C.frame);
box(33, 29, 4, 35, 35, 5, "#52676a");
box(12, 31, 28, 34, 34, 30, C.frameLight);

// Bench: three warm wooden back slats and a thick projecting seat.
for (const z of [17, 20, 23]) {
  box(14, 28, z, 29, 29, z + 1, C.woodDark);
  box(14, 27, z + 1, 29, 28, z + 1, C.wood);
  box(15, 27, z + 1, 28, 27, z + 1, C.woodLight);
}
box(14, 22, 12, 30, 28, 13, C.woodDark);
box(14, 22, 14, 30, 28, 14, C.wood);
box(15, 22, 14, 29, 22, 14, C.woodLight);
box(15, 23, 15, 29, 27, 15, "#d99439");
for (const x of [16, 28]) {
  box(x, 26, 4, x + 1, 28, 12, C.frame);
  box(x, 23, 5, x + 1, 27, 6, C.frameLight);
  box(x, 27, 13, x + 1, 29, 23, C.frame);
}
box(18, 25, 8, 25, 26, 9, "#526568");

// Broad gently stepped blue roof with paneled sheets and heavy fascia.
for (let y = 12; y <= 35; y++) {
  const z = 33 + Math.floor((y - 12) / 9);
  box(7, y, z - 2, 37, y, z - 1, C.roofDark);
  box(8, y, z, 36, y, z, y % 9 === 2 ? C.roofLight : C.roof);
  for (const x of [13, 20, 27, 34]) {
    set(x, y, z, C.roofDark);
    if (x + 1 <= 36) set(x + 1, y, z, C.roofLight);
  }
}
box(7, 11, 31, 37, 12, 32, C.roofDark);
box(8, 11, 32, 36, 11, 32, "#347a8c");
box(7, 11, 30, 8, 35, 31, "#204a59");
box(8, 34, 34, 36, 36, 35, C.roofDark);
for (const x of [13, 20, 27, 34]) {
  box(x, 11, 31, x, 13, 33, "#245466");
}

// White BUS lettering hanging beneath the front roof edge.
const letters = {
  B: ["110", "101", "110", "101", "110"],
  U: ["101", "101", "101", "101", "111"],
  S: ["111", "100", "111", "001", "111"]
};
let lx = 23;
for (const ch of "BUS") {
  for (let row = 0; row < 5; row++) {
    for (let col = 0; col < 3; col++) {
      if (letters[ch][row][col] === "1") {
        set(lx + col, 12, 29 - row, C.white);
        set(lx + col, 13, 29 - row, "#abbfbb");
      }
    }
  }
  lx += 4;
}

// Freestanding bus-stop sign, taller than the canopy.
box(39, 19, 3, 42, 22, 5, "#41555a");
box(40, 20, 5, 41, 21, 35, C.metal);
box(40, 19, 9, 40, 19, 30, "#a9b3ac");
box(38, 17, 33, 43, 23, 40, C.frame);
box(38, 17, 40, 43, 23, 41, "#276782");
box(39, 16, 34, 42, 16, 39, C.white);
box(39, 15, 35, 42, 15, 38, "#316b87");
box(40, 14, 36, 41, 14, 37, "#ebefe2");
set(40, 14, 35, C.yellow);
set(41, 14, 35, C.yellow);
box(39, 16, 29, 42, 17, 33, "#d8dfd5");
box(39, 15, 30, 42, 15, 32, "#f0eee0");
box(40, 14, 31, 41, 14, 31, "#d7a946");
box(43, 17, 34, 44, 19, 35, C.yellow);

// Compact dark-blue litter bin near the front-left corner.
box(9, 9, 4, 14, 14, 11, "#284450");
box(10, 8, 6, 13, 8, 10, "#405f6b");
box(11, 7, 7, 12, 7, 9, "#b8d2d2");
box(8, 8, 11, 15, 15, 12, "#304d5b");
box(9, 9, 13, 14, 14, 13, "#416c7c");
box(10, 8, 4, 13, 9, 5, "#1f3640");