fogón

← Ancient and prehistory3D assetfogon/columna-griega

Columna griega

by fogonCC09921 blocks
Columna griegaDrag to turn it
// «Columna griega» · gpt-6-sol (medium)
// A single tall white marble Greek column with vertical fluting, a square base and a scrolled Ionic capital at the top, with a little bit of ivy climbing at the bottom. A few broken marble chunks lie by its base.

const white = "#f5f1e5";
const light = "#fffaf0";
const cream = "#e8dfca";
const shade = "#d4c9b5";
const groove = "#c5baa9";
const green = "#477347";
const leafGreen = "#638e4f";
const leafLight = "#8aaa60";

const cx = 24, cy = 24;

// Square, stepped pedestal.
box(15, 15, 0, 33, 33, 2, cream);
box(15, 15, 2, 33, 33, 2, light);
box(16, 16, 3, 32, 32, 4, white);
box(16, 16, 3, 32, 3, 3, shade);
cylinder(cx, cy, 5, 8, 2, cream);
cylinder(cx, cy, 7, 8, 1, light);
cylinder(cx, cy, 8, 7, 1, shade);

// Twelve broad flutes, cut into a gently tapering marble shaft.
for (let z = 9; z <= 34; z++) {
  const taper = (z - 9) / 25;
  const radius = 7.8 - taper * 0.7 + 0.22 * Math.sin(taper * Math.PI);
  for (let x = 16; x <= 32; x++) {
    for (let y = 16; y <= 32; y++) {
      const dx = x - cx, dy = y - cy;
      const angle = Math.atan2(dy, dx);
      const flute = Math.cos(angle * 12);
      const edge = radius - (flute > 0.72 ? 0.95 : 0);
      const distance = Math.hypot(dx, dy);
      if (distance > edge) continue;

      let color = white;
      if (flute > 0.72 && distance > radius - 2.2) color = groove;
      else if (flute > 0.25 && distance > radius - 1.8) color = cream;
      else if (y < cy && flute < -0.35) color = light;
      if (y > cy + 4 && color === white) color = cream;
      set(x, y, z, color);
    }
  }
}

// Fine marble mottling, kept sparse so the flutes remain legible.
forEach((x, y, z, color) => {
  if (z < 35 && color === white && rand() < 0.025)
    set(x, y, z, rand() < 0.5 ? cream : light);
});

// Rounded neck and broad cushion beneath the Ionic scrolls.
cylinder(cx, cy, 35, 7, 1, shade);
cylinder(cx, cy, 36, 8, 1, light);
ellipsoid(cx, cy, 38, 9, 8, 2, cream);
box(20, 16, 37, 28, 17, 39, white);
box(20, 16, 37, 28, 16, 37, shade);
box(21, 15, 38, 27, 15, 38, cream);

// A pair of big, readable spiral volutes on the front and back.
for (const front of [true, false]) {
  const faceY = front ? 13 : 35;
  const innerY = front ? 14 : 34;
  for (const sx of [17, 31]) {
    for (let x = sx - 4; x <= sx + 4; x++) {
      for (let z = 35; z <= 41; z++) {
        const d = Math.hypot(x - sx, (z - 38) * 1.15);
        if (d <= 3.55) {
          box(x, front ? 14 : 32, z, x, front ? 16 : 34, z,
              d > 2.7 ? shade : white);
          if (d <= 2.9) set(x, faceY, z, d > 2.15 ? cream : light);
        }
      }
    }
    // Dark cream engraving curls inward to a central marble button.
    for (let t = 0; t < Math.PI * 3.6; t += 0.075) {
      const r = 2.65 - t * 0.19;
      const x = Math.round(sx + Math.cos(t) * r);
      const z = Math.round(38 + Math.sin(t) * r * 0.84);
      set(x, faceY, z, groove);
    }
    set(sx, front ? 12 : 36, 38, cream);
  }
}

// Heavy square abacus, with a bright beveled-looking upper edge.
box(13, 15, 41, 35, 33, 41, shade);
box(14, 16, 42, 34, 32, 42, white);
box(14, 16, 43, 34, 32, 43, light);
box(13, 15, 42, 35, 15, 42, cream);
box(13, 33, 42, 35, 33, 42, shade);
box(13, 15, 42, 13, 33, 42, cream);
box(35, 15, 42, 35, 33, 42, shade);

// Ivy starts across the pedestal and winds a short way up the front.
const vine = [
  [17, 14, 1], [18, 14, 3], [19, 15, 5], [20, 16, 7],
  [20, 16, 9], [21, 17, 11], [20, 17, 13], [19, 17, 15],
  [20, 17, 17]
];
for (let i = 1; i < vine.length; i++) {
  const a = vine[i - 1], b = vine[i];
  line(a[0], a[1], a[2], b[0], b[1], b[2], 0, green);
}
for (const [x, y, z, side] of [
  [18, 14, 3, -1], [20, 15, 6, 1], [20, 16, 9, -1],
  [21, 17, 11, 1], [20, 17, 14, -1], [20, 17, 17, 1]
]) {
  set(x + side, y - 1, z, leafGreen);
  set(x + side * 2, y - 1, z + 1, leafLight);
  set(x + side, y - 1, z + 1, leafGreen);
  set(x, y - 1, z + 1, leafLight);
}

// A few fallen, irregular marble pieces around the foot.
box(8, 19, 0, 11, 22, 1, shade);
box(9, 19, 2, 11, 21, 2, white);
set(10, 20, 3, light);
box(36, 17, 0, 39, 20, 1, cream);
box(37, 18, 2, 39, 19, 2, white);
set(38, 18, 3, light);
box(30, 9, 0, 33, 11, 1, shade);
box(31, 9, 2, 32, 10, 2, cream);
set(31, 9, 3, white);
box(12, 30, 0, 14, 33, 1, cream);
set(13, 31, 2, white);