fogón

← CiudadObjeto 3Dfogon/refugio-de-parada

Refugio de parada

de fogonCC08838 bloques
Refugio de paradaArrastrá para girarlo
// «Refugio de parada» · gpt-6-sol (medium)
// A modern bus shelter: a long flat roof on four slim grey steel posts, a glass back panel at +y and glass side panels, a long metal bench inside, a lit advertisement panel at one side, and a small round sign on a pole at the front corner with a bus symbol. Wide and open in front (-y).

const steel = "#536b65";
const steelDark = "#344b47";
const steelLight = "#81958b";
const concrete = "#d9d6c6";
const glass = "#a8d8da";

// Concrete platform and a warm brick edge along the open front.
box(5, 11, 0, 43, 34, 0, "#b9bcb2");
box(6, 12, 0, 42, 33, 0, concrete);
for (let x = 6; x <= 42; x++)
  for (let y = 12; y <= 33; y++)
    if (rand() < 0.045) set(x, y, 0, "#cbcbbd");
box(5, 11, 0, 43, 11, 0, "#af6553");
for (let x = 7; x <= 41; x += 5) set(x, 11, 0, "#e0a16e");

// Four slim steel posts.
for (const x of [7, 41]) {
  for (const y of [14, 32]) {
    box(x, y, 1, x + 1, y + 1, 23, steel);
    box(x, y, 2, x, y, 22, steelLight);
    box(x, y, 1, x + 1, y + 1, 2, steelDark);
  }
}

// Glass back wall, with narrow divisions and pale reflections.
box(9, 32, 4, 40, 32, 21, glass);
for (let x = 9; x <= 40; x++)
  for (let z = 4; z <= 21; z++)
    if (rand() < 0.09) set(x, 32, z, "#bce2df");
for (const x of [8, 18, 29, 40])
  box(x, 31, 3, x, 33, 22, steel);
box(8, 31, 3, 40, 33, 3, steelDark);
box(8, 31, 22, 40, 33, 22, steelDark);
box(9, 31, 11, 40, 31, 11, steelLight);
for (const x of [12, 23, 34]) {
  line(x, 31, 18, x + 2, 31, 20, 0, "#e4f4e9");
  line(x + 1, 31, 14, x + 2, 31, 15, 0, "#d4ece8");
}

// Glass side walls; the entire front remains open.
for (const x of [7, 41]) {
  box(x, 16, 4, x, 31, 21, "#9cced0");
  for (let y = 16; y <= 31; y++)
    for (let z = 4; z <= 21; z++)
      if (rand() < 0.07) set(x, y, z, "#b8e2df");
  for (const y of [16, 24, 31])
    box(x, y, 3, x, y, 22, steel);
  box(x, 16, 11, x, 31, 11, steelLight);
  box(x, 16, 3, x, 31, 3, steelDark);
  line(x, 18, 18, x, 21, 21, 0, "#e2f2e9");
  line(x, 26, 16, x, 28, 18, 0, "#dbefea");
}

// Long flat roof, with a bright top and colorful Buenos Aires-style fascia.
box(4, 11, 23, 44, 35, 25, steelDark);
box(5, 12, 26, 43, 34, 26, "#e7e5d6");
for (let x = 5; x <= 43; x++)
  for (let y = 12; y <= 34; y++)
    if (rand() < 0.055) set(x, y, 26, "#f3efdf");
box(4, 11, 24, 44, 11, 24, "#d9ad54");
box(4, 11, 23, 44, 11, 23, steel);
box(4, 35, 23, 44, 35, 23, steel);
for (const x of [13, 23, 33])
  box(x, 12, 27, x, 34, 27, "#d5d6c9");
for (let x = 6; x <= 42; x += 7)
  box(x, 11, 24, x + 2, 11, 24, "#bd6853");

// Long dark-green metal bench, positioned in front of the glass.
for (const x of [19, 27, 36]) {
  box(x, 25, 1, x + 1, 27, 8, steelDark);
  box(x, 28, 1, x + 1, 28, 15, steelDark);
}
box(18, 23, 9, 38, 28, 10, steel);
box(18, 23, 10, 38, 27, 10, steelLight);
for (const y of [24, 26, 28])
  box(19, y, 11, 37, y, 11, "#a7b5a0");
box(18, 28, 12, 38, 29, 17, steel);
for (const z of [13, 16])
  box(19, 27, z, 37, 27, z, steelLight);
for (const x of [18, 38]) {
  box(x, 22, 11, x, 28, 13, steelDark);
  box(x, 22, 14, x, 28, 14, steelLight);
}

// Lit advertisement box at the left end, facing the viewer.
box(9, 19, 4, 17, 21, 22, steelDark);
box(10, 18, 5, 16, 18, 21, "#ffe6a2");
box(10, 17, 6, 16, 17, 20, "#fff0bd");
box(9, 17, 4, 17, 17, 5, steel);
box(9, 17, 21, 17, 17, 22, steel);
box(9, 17, 5, 9, 17, 21, steel);
box(17, 17, 5, 17, 17, 21, steel);

// Simple pixel-letter "BA" and a colorful cityscape on the poster.
const letters = [
  "1110110",
  "1010101",
  "1100111",
  "1010101",
  "1110101"
];
for (let row = 0; row < letters.length; row++)
  for (let col = 0; col < 7; col++)
    if (letters[row][col] === "1")
      set(10 + col, 16, 19 - row, "#287d79");
box(10, 16, 7, 11, 16, 10, "#e87b5d");
box(12, 16, 7, 13, 16, 12, "#e9ad4e");
box(14, 16, 7, 16, 16, 9, "#6faead");
box(10, 16, 6, 16, 16, 6, "#317a72");
for (const x of [10, 12, 14, 16]) set(x, 16, 7, "#f8ddb0");
box(12, 16, 13, 14, 16, 13, "#dd7159");

// Round bus-stop sign on its own pole at the front corner.
box(43, 7, 0, 44, 8, 15, steelDark);
box(43, 7, 1, 43, 7, 14, steelLight);
box(42, 6, 0, 45, 9, 1, steel);
for (let x = 38; x <= 47; x++)
  for (let z = 12; z <= 22; z++) {
    const d = Math.hypot(x - 43, z - 17);
    if (d <= 5) set(x, 6, z, steelDark);
    if (d <= 4) set(x, 5, z, "#ffe7a6");
  }
// A tiny, high-contrast bus pictogram on the sign.
box(40, 4, 16, 46, 4, 18, "#286d68");
box(41, 4, 18, 45, 4, 19, "#286d68");
box(41, 3, 18, 42, 3, 18, "#d7f0e5");
box(44, 3, 18, 45, 3, 18, "#d7f0e5");
set(41, 3, 15, steelDark);
set(45, 3, 15, steelDark);