fogón

← Casa completaObjeto 3Dfogon/tabla-de-planchar

Tabla de planchar

de fogonCC04230 bloques
Tabla de plancharArrastrá para girarlo
// «Tabla de planchar» · gpt-6-sol (medium)
// An ironing board: a long narrow board with a rounded front end covered in a floral pastel cover, on crossed metal legs, with a light blue steam iron standing at the back end and a folded shirt on it.

// A pastel ironing board, facing the viewer at -y.
const metal = "#aebbc0";
const metalLight = "#e3eceb";
const metalDark = "#849398";

// Wide, rubber-tipped feet.
for (const y of [12, 37]) {
  box(16, y - 1, 0, 32, y + 1, 1, metalDark);
  box(18, y, 1, 30, y, 2, metalLight);
  for (const x of [16, 32]) box(x - 1, y - 1, 0, x + 1, y + 1, 1, "#68777b");
}

// Crossed, tubular legs. Two parallel pairs make the stand sturdy.
for (const x of [20, 28]) {
  line(x, 13, 2, x, 36, 25, 1, metal);
  line(x, 36, 2, x, 13, 25, 1, metalLight);
  set(x, 24, 13, "#f7faf5");
  set(x, 25, 13, metalDark);
}
line(20, 24, 13, 28, 24, 13, 1, metalDark);
line(20, 13, 23, 28, 13, 23, 0, metalDark);
line(20, 36, 23, 28, 36, 23, 0, metalDark);

// Rounded outline: the narrow, curved nose is at the front.
function edges(y) {
  if (y === 4) return [23, 25];
  if (y === 5) return [21, 27];
  if (y === 6) return [19, 29];
  if (y === 7) return [18, 30];
  if (y === 8) return [17, 31];
  if (y === 43) return [18, 30];
  if (y === 44) return [20, 28];
  return [16, 32];
}

for (let y = 4; y <= 44; y++) {
  const [left, right] = edges(y);
  for (let x = left; x <= right; x++) {
    set(x, y, 25, "#d4ddda"); // solid board
    set(x, y, 26, x === left || x === right ? metalDark : "#f5eee2");
    set(x, y, 27, x === left || x === right ? "#f2dfcf" : "#d6ebd9");
    set(x, y, 28, rand() < 0.13 ? "#c8e8d0" : "#b8dfca");
  }
  // Soft, contrasting piping around the cover.
  set(left, y, 28, "#f7d5bd");
  set(right, y, 28, "#f7d5bd");
}
for (let x = 23; x <= 25; x++) set(x, 4, 28, "#f7d5bd");

// Little flowers scattered over the exposed mint fabric.
const flowers = [
  [24, 10], [20, 14], [29, 15], [17, 20], [31, 24],
  [18, 29], [30, 31], [17, 35], [31, 38], [18, 41]
];
for (const [x, y] of flowers) {
  const petal = rand() < 0.5 ? "#fff6df" : "#f4b7bc";
  for (const [dx, dy] of [[-1, 0], [1, 0], [0, -1], [0, 1]]) {
    set(x + dx, y + dy, 29, petal);
  }
  set(x, y, 29, "#e9b961");
  set(x - 2, y + 1, 29, "#7ebc9a");
  set(x + 2, y - 1, 29, "#8ac5a0");
}

// A neatly folded peach shirt, with its sleeves tucked inward.
box(20, 18, 29, 28, 29, 30, "#dfa087");
box(20, 19, 31, 28, 28, 31, "#f3b69b");
box(21, 19, 32, 27, 27, 32, "#f9c4a9");
box(18, 22, 29, 20, 26, 30, "#e9a88d");
box(28, 22, 29, 30, 26, 30, "#e9a88d");
box(19, 23, 31, 21, 25, 31, "#ffd0b3");
box(27, 23, 31, 29, 25, 31, "#ffd0b3");
// Folded hem and a small pointed collar.
box(21, 18, 32, 27, 19, 32, "#ffe0c8");
box(22, 27, 33, 23, 29, 33, "#fff1dd");
box(25, 27, 33, 26, 29, 33, "#fff1dd");
set(24, 27, 32, "#de8c78");
for (const y of [23, 25]) set(24, y, 33, "#fff3dc");

// The light-blue iron at the back: white soleplate, tapered steam body.
for (let y = 33; y <= 42; y++) {
  const half = y === 33 ? 1 : y === 34 ? 2 : y === 35 ? 3 : 4;
  box(24 - half, y, 29, 24 + half, y, 30, "#e9ece8");
  box(24 - half, y, 31, 24 + half, y, 31, "#91adb8");
  box(24 - half, y, 32, 24 + half, y, 33, "#a9d8e4");
  if (y >= 36) box(21, y, 34, 27, y, 35, "#c4e8ec");
}
box(21, 40, 32, 27, 42, 35, "#8ec6d5");
box(22, 41, 36, 26, 42, 36, "#e9f6f1");

// Raised grip with an open space beneath it.
box(22, 37, 36, 26, 38, 36, "#7ea9b6");
box(22, 37, 39, 26, 41, 40, "#f4faf5");
box(22, 37, 37, 26, 37, 39, "#f4faf5");
box(22, 41, 37, 26, 41, 39, "#f4faf5");
box(23, 38, 40, 25, 40, 40, "#a9d8e4");
set(24, 36, 35, "#f5c775"); // cheerful temperature dial
set(23, 35, 34, "#ffffff"); // steam button