fogón

← Antiguo y prehistoriaObjeto 3Dfogon/templo-egipcio

Templo egipcio

de fogonCC029115 bloques
Templo egipcioArrastrá para girarlo
// «Templo egipcio» · gpt-6-sol (medium)
// An Egyptian temple front: two massive sloping pylon towers of sandstone on either side of a tall doorway, with painted reliefs in blue, red and gold, and a row of thick lotus-topped columns in front. Two small seated statues guard the entrance on the front (-y).

const sand = "#d9aa62";
const light = "#edc681";
const shade = "#bd8749";
const deep = "#98683e";
const gold = "#f6cb43";
const goldDark = "#bb842b";
const turquoise = "#32b9b2";
const blue = "#245e9d";
const lapis = "#193b73";
const red = "#bd5140";

const front = z => 16 + Math.floor(z / 12);
const face = (x, z, color) => set(x, front(z) - 1, z, color);

// Stone platform and the shallow stair leading to the doorway.
box(2, 14, 0, 45, 37, 1, shade);
box(2, 14, 2, 45, 35, 2, sand);
box(17, 4, 0, 30, 16, 0, light);
box(18, 7, 1, 29, 16, 1, sand);
box(19, 11, 2, 28, 17, 2, light);
for (let y = 5; y <= 13; y += 4)
  box(18, y, y === 5 ? 0 : y === 9 ? 1 : 2,
      29, y, y === 5 ? 0 : y === 9 ? 1 : 2, goldDark);

// The two battered, solid pylon towers.
for (let z = 3; z <= 35; z++) {
  const inset = Math.floor(z / 10);
  const inner = Math.floor(z / 19);
  const yf = front(z);
  const yb = 35 - Math.floor(z / 20);
  const spans = [
    [3 + inset, 19 - inner],
    [28 + inner, 44 - inset]
  ];

  for (const [a, b] of spans) {
    box(a, yf, z, b, yb, z, z % 9 === 0 ? light : sand);
    for (let x = a; x <= b; x++) {
      const grain = rand();
      if (grain < 0.085) set(x, yf, z, light);
      else if (grain < 0.16) set(x, yf, z, shade);
    }
    if (rand() < 0.35) set(a, yf + 3, z, shade);
  }
}

// High projecting cornices, with a bright gold edge.
for (const [a, b] of [[6, 18], [29, 41]]) {
  box(a, 18, 36, b, 35, 36, light);
  box(a, 18, 37, b, 35, 37, goldDark);
  box(a + 1, 18, 38, b - 1, 34, 38, gold);
  box(a, 17, 35, b, 17, 35, turquoise);
}

// Horizontal painted courses across each tower.
for (const z of [5, 30, 33]) {
  for (const [a, b] of [[5, 18], [29, 42]]) {
    for (let x = a; x <= b; x++)
      face(x, z, z === 30 ? turquoise : goldDark);
  }
}

// Framed painted relief panels on the tower fronts.
for (const cx of [11, 36]) {
  for (let z = 8; z <= 25; z++) {
    face(cx - 5, z, goldDark);
    face(cx + 5, z, goldDark);
    face(cx - 4, z, turquoise);
    face(cx + 4, z, turquoise);
  }
  for (let x = cx - 5; x <= cx + 5; x++) {
    face(x, 8, goldDark);
    face(x, 25, goldDark);
  }

  // Large, simple cartouche: a blue field around a golden figure.
  for (let z = 12; z <= 22; z++)
    for (let x = cx - 2; x <= cx + 2; x++)
      face(x, z, blue);
  for (let z = 12; z <= 22; z++) {
    face(cx - 3, z, gold);
    face(cx + 3, z, gold);
  }
  for (let x = cx - 2; x <= cx + 2; x++) {
    face(x, 11, gold);
    face(x, 23, gold);
  }
  face(cx, 20, gold);
  face(cx - 1, 19, gold);
  face(cx, 19, gold);
  face(cx + 1, 19, gold);
  face(cx, 18, red);
  face(cx, 17, gold);
  face(cx, 16, gold);
  face(cx - 1, 15, gold);
  face(cx + 1, 15, gold);
  face(cx - 1, 13, gold);
  face(cx + 1, 13, gold);

  // Sun disk and outspread red-and-gold wings above the relief.
  for (let dx = -2; dx <= 2; dx++)
    face(cx + dx, 28, Math.abs(dx) < 2 ? gold : goldDark);
  face(cx, 27, gold);
  face(cx, 29, gold);
  for (let dx = 3; dx <= 6; dx++)
    face(cx + dx, 28 - (dx > 4 ? 1 : 0), dx % 2 ? red : gold);
  for (let dx = -6; dx <= -3; dx++)
    face(cx + dx, 28 - (dx < -4 ? 1 : 0), dx % 2 ? red : gold);
}

// Recessed, tall entrance and its painted jambs.
box(20, 17, 3, 27, 31, 26, deep);
box(21, 16, 3, 26, 30, 25, lapis);
box(21, 29, 3, 26, 30, 25, "#102947");
box(20, 15, 3, 20, 17, 26, goldDark);
box(27, 15, 3, 27, 17, 26, goldDark);
box(21, 15, 3, 21, 15, 25, turquoise);
box(26, 15, 3, 26, 15, 25, turquoise);
box(19, 15, 26, 28, 20, 29, sand);
box(19, 14, 26, 28, 14, 26, goldDark);
box(19, 14, 29, 28, 14, 29, gold);
box(21, 14, 27, 26, 14, 27, blue);
for (let x = 22; x <= 25; x++)
  set(x, 13, 28, x % 2 ? gold : red);

// Four chunky columns, each crowned with a turquoise lotus.
for (const cx of [9, 16, 32, 39]) {
  const cy = 10;
  box(cx - 3, cy - 3, 2, cx + 3, cy + 3, 3, shade);
  box(cx - 2, cy - 2, 4, cx + 2, cy + 2, 5, light);
  cylinder(cx, cy, 6, 2, 13, sand);
  for (const [dx, dy] of [[-2, 0], [2, 0], [0, -2], [0, 2]])
    line(cx + dx, cy + dy, 6, cx + dx, cy + dy, 18, 0, shade);
  cylinder(cx, cy, 18, 3, 2, goldDark);
  cylinder(cx, cy, 20, 3, 3, turquoise);
  cylinder(cx, cy, 23, 2, 2, gold);
  for (const [dx, dy] of [[-3, 0], [3, 0], [0, -3], [0, 3]]) {
    set(cx + dx, cy + dy, 21, blue);
    set(cx + dx, cy + dy, 22, turquoise);
  }
  set(cx, cy - 3, 21, light);
}

// Two small seated guardian statues beside the entrance.
for (const cx of [20, 28]) {
  const cy = 8;
  box(cx - 2, cy - 2, 2, cx + 2, cy + 2, 3, goldDark);
  box(cx - 1, cy - 2, 4, cx + 1, cy + 1, 5, shade); // knees
  box(cx - 1, cy, 5, cx + 1, cy + 1, 9, sand);
  box(cx - 2, cy - 1, 6, cx - 2, cy, 8, light);
  box(cx + 2, cy - 1, 6, cx + 2, cy, 8, light);
  box(cx - 1, cy - 1, 9, cx + 1, cy + 1, 12, light);
  box(cx - 2, cy - 1, 12, cx + 2, cy + 1, 13, blue); // headdress
  box(cx - 1, cy - 2, 10, cx + 1, cy - 2, 10, gold);
  set(cx - 1, cy - 2, 11, lapis);
  set(cx + 1, cy - 2, 11, lapis);
  set(cx, cy - 2, 9, red);
  set(cx, cy - 2, 7, turquoise);
}