fogón

← NaturalezaObjeto 3Dfogon/muneco-de-nieve

Muñeco de nieve

de fogonCC010145 bloques
Muñeco de nieveArrastrá para girarlo
// «Muñeco de nieve» · gpt-6-sol (medium)
// A snowman: three stacked white snowballs getting smaller, coal eyes and buttons, an orange carrot nose pointing forward, stick arms and a red scarf.

// Three chunky snowballs
ellipsoid(24, 25, 11, 11, 11, 11, "#eef8fc");
ellipsoid(24, 25, 26, 9, 9, 9, "#eef8fc");
ellipsoid(24, 25, 38, 7, 7, 7, "#eef8fc");

// Soft, sunlit snow with cool shadows
forEach((x, y, z, color) => {
  if (color !== "#eef8fc") return;
  const exposed = !get(x, y, z + 1) || !get(x, y - 1, z);
  const n = rand();
  let shade = z < 13 ? "#e6f2f8" : "#f2faff";
  if (exposed && !get(x, y, z + 1)) shade = "#fffefd";
  if (exposed && y > 27) shade = "#dcecf5";
  if (exposed && n < 0.045) shade = "#d9eaf3";
  if (exposed && n > 0.965) shade = "#ffffff";
  set(x, y, z, shade);
});

// Branch arms, reaching up and out
line(16, 23, 28, 9, 22, 32, 1.4, "#80502d");
line(9, 22, 32, 5, 21, 35, 1.2, "#80502d");
line(9, 22, 32, 7, 20, 38, 0.8, "#704022");
line(7, 21, 34, 4, 19, 33, 0.7, "#704022");
line(32, 23, 28, 39, 22, 32, 1.4, "#80502d");
line(39, 22, 32, 44, 21, 35, 1.2, "#80502d");
line(39, 22, 32, 41, 20, 38, 0.8, "#704022");
line(42, 21, 34, 45, 19, 33, 0.7, "#704022");
line(11, 21, 32, 7, 20, 35, 0, "#b87b40");
line(36, 21, 30, 41, 20, 33, 0, "#b87b40");

// A thick scarf wrapped around the narrow neck
for (let z = 32; z <= 34; z++) {
  for (let x = 16; x <= 32; x++) {
    for (let y = 17; y <= 33; y++) {
      const d = Math.hypot(x - 24, y - 25);
      if (d >= 5.7 && d <= 7.4) {
        set(x, y, z, z === 32 ? "#ae2638" : z === 34 ? "#fa5360" : "#df3548");
      }
    }
  }
}
// Knot and dangling end on the front-right
ellipsoid(29, 17, 32, 2, 1.8, 2, "#e93d4c");
box(28, 15, 25, 30, 17, 30, "#d92e42");
box(28, 14, 24, 30, 16, 25, "#b92438");
box(28, 14, 28, 30, 14, 28, "#fa6970");
box(28, 14, 31, 29, 14, 32, "#ff7375");

// Glossy coal buttons
for (const [y, z] of [[15, 27], [16, 23], [13, 13], [14, 8]]) {
  sphere(24, y, z, 1.45, "#273039");
  set(23, y - 1, z + 1, "#687580");
}

// Coal eyes and a little dotted smile
sphere(21, 18, 40, 1.35, "#242b34");
sphere(27, 18, 40, 1.35, "#242b34");
set(20, 17, 41, "#77838b");
set(26, 17, 41, "#77838b");
for (const [x, y, z] of [
  [20, 21, 36], [22, 19, 35], [24, 18, 35],
  [26, 19, 35], [28, 21, 36]
]) {
  set(x, y, z, "#34383d");
}

// Tapered carrot pointing straight toward the viewer (-y)
for (let y = 9; y <= 19; y++) {
  const r = y >= 17 ? 2 : y >= 13 ? 1.4 : 0.6;
  for (let x = 21; x <= 27; x++) {
    for (let z = 35; z <= 40; z++) {
      if ((x - 24) ** 2 + (z - 38) ** 2 <= r * r) {
        set(x, y, z, z >= 38 ? "#ffad30" : "#ee731f");
      }
    }
  }
}
for (const y of [14, 17]) {
  set(23, y, 39, "#ffc04b");
}