fogón

← Antiguo y prehistoriaObjeto 3Dfogon/templo-griego

Templo griego

de fogonCC020870 bloques
Templo griegoArrastrá para girarlo
// «Templo griego» · gpt-6-sol (medium)
// A Greek temple like a small Parthenon: a stepped white marble platform, a row of fluted columns all around, a triangular pediment roof on the front (-y) with a simple relief, and a terracotta tiled roof. Clean white and light grey with warm shading.

const marble = "#eeeae0";
const light = "#faf7ee";
const warm = "#ded8ca";
const shadow = "#c8c5be";
const groove = "#bbb9b4";
const red = "#a94f39";
const tile = "#bd6849";
const tileLight = "#d17a54";
const tileDark = "#9f4b38";
const bronze = "#9c7650";

// Three broad marble steps.
box(4, 4, 0, 43, 43, 0, shadow);
box(5, 5, 1, 42, 42, 1, warm);
box(7, 7, 2, 40, 40, 2, light);
box(8, 8, 3, 39, 39, 3, marble);

// A short central staircase projects toward the viewer.
box(18, 2, 0, 29, 7, 0, light);
box(18, 4, 1, 29, 8, 1, warm);
box(18, 6, 2, 29, 9, 2, light);

// The enclosed inner chamber leaves a walkway behind the columns.
box(15, 17, 4, 32, 32, 19, warm);
box(15, 17, 18, 32, 32, 20, light);
box(16, 16, 4, 31, 16, 18, marble);
box(20, 15, 5, 27, 15, 17, bronze);
box(21, 14, 5, 26, 15, 16, "#723d35");
box(23, 13, 6, 23, 14, 15, tileDark);
box(26, 13, 10, 26, 13, 11, "#dfb977");

// Columns around all four sides.
function column(cx, cy) {
  cylinder(cx, cy, 4, 2, 2, warm);
  cylinder(cx, cy, 6, 1.8, 14, marble);
  for (let z = 6; z <= 19; z++) {
    set(cx, cy - 2, z, z % 5 === 0 ? light : warm);
    set(cx, cy + 2, z, groove);
    set(cx - 2, cy, z, warm);
    set(cx + 2, cy, z, groove);
    set(cx - 1, cy - 1, z, light);
  }
  box(cx - 2, cy - 2, 20, cx + 2, cy + 2, 20, light);
  box(cx - 2, cy - 2, 21, cx + 2, cy + 2, 21, warm);
}
for (const x of [11, 16, 21, 26, 31, 36]) {
  column(x, 11);
  column(x, 36);
}
for (const y of [16, 21, 26, 31]) {
  column(11, y);
  column(36, y);
}

// Heavy, layered entablature and a readable front frieze.
box(9, 9, 22, 38, 38, 22, light);
box(9, 9, 23, 38, 38, 23, warm);
box(9, 9, 24, 38, 38, 24, light);
for (let x = 11; x <= 36; x += 5) {
  box(x, 8, 23, x + 1, 8, 24, shadow);
  set(x, 8, 22, bronze);
}

// A triangular marble pediment faces the viewer; tiled slopes run behind it.
function roofHeight(x) {
  return 25 + Math.max(0, Math.round((15.5 - Math.abs(x - 23.5)) * 0.48));
}
for (let x = 8; x <= 39; x++) {
  const top = roofHeight(x);
  if (x >= 9 && x <= 38) {
    box(x, 7, 25, x, 9, top - 1, x % 6 === 0 ? warm : marble);
  }

  // Pale projecting outline on the front gable.
  set(x, 6, top - 1, shadow);
  set(x, 7, top, light);

  for (let y = 9; y <= 39; y++) {
    const color = (y + Math.floor(x / 2)) % 5 === 0
      ? tileLight
      : (y % 5 === 0 ? tileDark : tile);
    set(x, y, top - 1, tileDark);
    set(x, y, top, color);
  }
}
// Ridge caps and pronounced lower eaves.
for (let y = 9; y <= 40; y++) {
  set(23, y, 33, tileLight);
  set(24, y, 33, tileLight);
  set(8, y, 25, tileDark);
  set(39, y, 25, tileDark);
}

// Simple raised relief: a central standing figure and two wreath-like forms.
box(23, 6, 26, 24, 6, 29, warm);
box(22, 6, 28, 25, 6, 28, light);
box(23, 6, 30, 24, 6, 30, light);
set(23, 6, 31, bronze);
for (const x of [17, 30]) {
  set(x, 6, 26, bronze);
  set(x - 1, 6, 27, warm);
  set(x, 6, 28, light);
  set(x + 1, 6, 27, warm);
}

// Sparse warm variation makes the large stone surfaces less flat.
forEach((x, y, z, color) => {
  if (color === marble && rand() < 0.035) set(x, y, z, light);
  else if (color === warm && rand() < 0.025) set(x, y, z, marble);
});