fogón

← BásicoObjeto 3Dfogon/piramide-escalonada

Pirámide escalonada

de fogonCC024617 bloques
Pirámide escalonadaArrastrá para girarlo
// «Pirámide escalonada» · gpt-6-sol (medium)
// Stepped pyramid («Pirámide escalonada»).

const stone = "#d5ad70";
const light = "#edc783";
const sunlit = "#f6d692";
const shadow = "#a47d4d";
const edge = "#bc925b";

// Broad, low foundation.
box(2, 2, 0, 45, 45, 0, shadow);
box(3, 3, 1, 44, 44, 1, light);

// Eight solid, receding terraces.
for (let tier = 0; tier < 8; tier++) {
  const lo = 3 + tier * 2;
  const hi = 44 - tier * 2;
  const z = 1 + tier * 3;

  box(lo, lo, z, hi, hi, z + 1, stone);
  box(lo, lo, z + 2, hi, hi, z + 2, light);

  // Dark lower course and a bright, projecting lip.
  box(lo, lo, z, hi, lo, z, shadow);
  box(hi, lo, z, hi, hi, z, shadow);
  box(lo, lo, z + 2, hi, lo, z + 2, sunlit);
  box(hi, lo, z + 2, hi, hi, z + 2, edge);
}

// Small variations in the exposed sandstone faces.
forEach((x, y, z, color) => {
  if (z < 2 || z > 23 || rand() > 0.075) return;
  if (get(x, y - 1, z) === undefined || get(x + 1, y, z) === undefined) {
    set(x, y, z, rand() < 0.55 ? "#dfb778" : "#c49a60");
  }
});

// Two narrow flights climbing the visible faces of the pyramid.
for (let t = 0; t < 8; t++) {
  const front = 3 + 2 * t;
  const right = 44 - 2 * t;
  const level = 3 + 3 * t;

  for (let step = 0; step < 2; step++) {
    const height = level + step;

    box(20, front + step, 0, 27, front + step, height - 1, stone);
    box(20, front + step, height, 27, front + step, height, sunlit);

    box(right - step, 20, 0, right - step, 27, height - 1, stone);
    box(right - step, 20, height, right - step, 27, height, light);
  }

  // Raised, blocky edges make the stair flights legible from afar.
  for (const x of [19, 28]) {
    box(x, front, level, x, front + 1, level, edge);
    set(x, front + 1, level + 1, light);
  }
  for (const y of [19, 28]) {
    box(right - 1, y, level, right, y, level, edge);
    set(right - 1, y, level + 1, light);
  }
}

// Entrance landing and the shaded, open-sided shrine.
box(17, 17, 25, 30, 30, 25, light);
box(20, 17, 25, 27, 19, 25, sunlit);
box(28, 20, 25, 30, 27, 25, light);

// Rear walls, with dark recesses behind the open colonnade.
box(19, 29, 26, 28, 30, 31, "#b58c57");
box(20, 28, 26, 27, 28, 30, "#80633f");
box(29, 20, 26, 30, 28, 31, "#b58c57");
box(28, 21, 26, 28, 27, 30, "#866743");

// Square corner pillars and narrow intermediate columns.
for (const [x, y] of [[18, 18], [29, 18], [18, 29], [29, 29]]) {
  box(x, y, 26, x + 1, y + 1, 31, stone);
  box(x, y, 26, x + 1, y + 1, 26, shadow);
  box(x, y, 30, x + 1, y + 1, 31, light);
}
for (const x of [22, 26]) {
  box(x, 18, 26, x, 18, 30, edge);
  set(x, 18, 31, light);
}
for (const y of [22, 26]) {
  box(29, y, 26, 29, y, 30, edge);
  set(29, y, 31, light);
}

// Heavy lintels and the distinctive layered, tapering roof.
box(17, 17, 31, 31, 18, 31, shadow);
box(29, 17, 31, 31, 30, 31, shadow);
box(16, 16, 32, 32, 32, 32, edge);
box(16, 16, 33, 32, 32, 33, sunlit);
box(18, 18, 34, 30, 30, 34, shadow);
box(18, 18, 35, 30, 30, 35, light);
box(20, 20, 36, 28, 28, 36, edge);
box(20, 20, 37, 28, 28, 37, sunlit);