fogón

← Casa completaObjeto 3Dfogon/espejo-de-pie

Espejo de pie

de fogonCC06418 bloques
Espejo de pieArrastrá para girarlo
// «Espejo de pie» · gpt-6-sol (medium)
// A full-length standing mirror: a tall oval mirror in a light wood frame, tilting slightly back, held between two wooden side posts on a wide base, with a light blue-grey reflection and a lighter diagonal highlight.

// A freestanding, slightly back-tilted oval mirror.
const honey = "#dca45e";
const honeyLight = "#f2c581";
const honeyDark = "#ad713e";
const walnut = "#895738";
const walnutLight = "#ae7548";
const metal = "#d8bd82";

function wood(x0, y0, z0, x1, y1, z1, color) {
  box(x0, y0, z0, x1, y1, z1, color);
  for (let x = x0; x <= x1; x++)
    for (let y = y0; y <= y1; y++)
      for (let z = z0; z <= z1; z++)
        if (rand() < 0.055) set(x, y, z, "#e6b675");
}

// Wide, low runners with gently stepped ends.
for (const [a, b] of [[7, 12], [36, 41]]) {
  wood(a, 12, 0, b, 36, 2, walnut);
  wood(a + 1, 10, 0, b - 1, 38, 1, walnutLight);
  box(a, 14, 3, b, 34, 3, honey);
  box(a + 1, 11, 1, b - 1, 13, 2, honeyLight);
  box(a + 1, 35, 1, b - 1, 37, 2, honeyLight);
}
wood(10, 27, 1, 38, 31, 3, honeyDark);
box(11, 27, 4, 37, 29, 4, honeyLight);
box(13, 26, 2, 35, 26, 3, walnutLight);

// Two sturdy side posts, with lighter front edges and rounded-looking caps.
for (const [a, b] of [[8, 11], [37, 40]]) {
  wood(a, 23, 3, b, 27, 32, honey);
  box(a, 22, 5, b, 22, 29, honeyLight);
  box(a, 23, 4, b, 23, 5, honeyDark);
  box(a + 1, 23, 33, b - 1, 26, 34, honeyLight);
  box(a + 1, 22, 32, b - 1, 25, 33, honey);
  box(a, 25, 6, b, 27, 6, walnutLight);
}

// The mirror's centerline moves toward +y as it rises: a visible backward tilt.
const cx = 24, cz = 23.5, rx = 13.1, rz = 19.5;
for (let z = 4; z <= 43; z++) {
  const front = Math.round(18 + (z - 4) * 0.18);
  for (let x = 10; x <= 38; x++) {
    const q = ((x - cx) / rx) ** 2 + ((z - cz) / rz) ** 2;
    if (q > 1) continue;

    // Solid walnut back and chunky honey-wood outer frame.
    for (let y = front + 1; y <= front + 3; y++)
      set(x, y, z, y === front + 3 ? walnut : honeyDark);

    if (q > 0.76) {
      set(x, front, z, q > 0.93 ? honeyDark :
        z > 27 || x < 24 ? honeyLight : honey);
      if (q > 0.88) set(x, front - 1, z, honey);
    } else if (q > 0.70) {
      set(x, front, z, "#f5d49b"); // thin bright inner bevel
    } else {
      // Cool, softly varied glass recessed just behind the bevel.
      let color = z > 30 ? "#c4dce1" : z < 15 ? "#a8c4cc" : "#b5d0d7";
      if (rand() < 0.055) color = "#c3d9dd";

      // Broad diagonal reflection, upper left to lower right.
      const diagonal = 27 - 0.39 * (z - 14);
      if (Math.abs(x - diagonal) < 2.1 && z >= 12 && z <= 37)
        color = Math.abs(x - diagonal) < 0.9 ? "#edf8f5" : "#dbeeee";
      set(x, front, z, color);
    }
  }
}

// Warm wooden pivot knobs on either side of the mirror.
for (const x of [10, 38]) {
  box(x - 1, 20, 21, x + 1, 23, 24, honeyDark);
  box(x - 1, 19, 22, x + 1, 19, 23, metal);
  set(x, 18, 22, "#fff0bc");
}