fogón

← Casa completaObjeto 3Dfogon/cama-de-gato

Cama de gato

de fogonCC013552 bloques
Cama de gatoArrastrá para girarlo
// «Cama de gato» · gpt-6-sol (medium)
// A round cat bed: a plush donut-shaped cushion in grey with a fluffy cream inner pad, with a small orange cat curled up asleep in it.

const cx = 24, cy = 24;

// Solid base beneath the cushion.
for (let x = 4; x <= 44; x++)
for (let y = 4; y <= 44; y++) {
  const d = Math.hypot(x - cx, y - cy);
  if (d > 18.8) continue;
  for (let z = 0; z <= 3; z++) {
    set(x, y, z, z === 0 ? "#77777b" : "#99999c");
  }
}

// Fluffy cream pad, puffed up inside the raised rim.
ellipsoid(cx, cy, 3.8, 13.5, 13.5, 3.4, "#f3e8d0");
ellipsoid(cx, cy, 5.0, 11.5, 11.5, 2.1, "#fff2dc");

// Rounded grey donut rim, with a subtly lighter top.
for (let x = 4; x <= 44; x++)
for (let y = 4; y <= 44; y++)
for (let z = 1; z <= 12; z++) {
  const r = Math.hypot(x - cx, y - cy);
  const a = (r - 15.8) / 4.5;
  const b = (z - 6.1) / 5.8;
  if (a * a + b * b > 1) continue;
  let color = z <= 3 ? "#89898e" :
              z >= 10 ? "#bdbdc0" :
              z >= 7 ? "#afafb3" : "#9d9da2";
  if (rand() < 0.08) color = z >= 8 ? "#c7c6c7" : "#aaa9ad";
  set(x, y, z, color);
}

// Short, soft-looking seams across the top of the cushion.
for (let i = 0; i < 12; i++) {
  const angle = i * Math.PI / 6;
  for (let r = 14.3; r <= 17.4; r += 0.8) {
    const z = Math.round(6.1 + 5.8 * Math.sqrt(1 - ((r - 15.8) / 4.5) ** 2));
    set(cx + Math.cos(angle) * r, cy + Math.sin(angle) * r, z, "#d4d2d1");
  }
}

// A little woven label on the front.
box(29, 4, 3, 33, 4, 5, "#e7b7a7");
box(30, 3, 4, 32, 3, 4, "#f6d4c5");

// Tiny tufts on the exposed inner pad.
for (let i = 0; i < 85; i++) {
  const x = 13 + Math.floor(rand() * 23);
  const y = 13 + Math.floor(rand() * 23);
  if (Math.hypot(x - cx, y - cy) > 11.5) continue;
  for (let z = 7; z >= 5; z--) {
    if (get(x, y, z) === "#fff2dc" || get(x, y, z) === "#f3e8d0") {
      set(x, y, z, rand() < 0.5 ? "#fff8e9" : "#e9dcc4");
      break;
    }
  }
}

// The sleeping cat's curled, chunky body.
ellipsoid(21, 25, 9, 9.3, 7.0, 4.0, "#d97b37");
ellipsoid(20, 24, 10, 7.3, 5.7, 3.0, "#ed9850");
ellipsoid(22, 27, 7, 5.0, 3.0, 1.5, "#e9a66c");

// Broad, gentle tabby stripes over its back.
line(15, 21, 11, 17, 24, 13, 0, "#be632f");
line(18, 19, 11, 20, 22, 13, 0, "#c66a31");
line(22, 19, 11, 24, 22, 12, 0, "#c66a31");
line(17, 28, 12, 19, 30, 11, 0, "#c66a31");

// Tail curls around the outside of the body and tucks in.
line(14, 23, 9, 13, 27, 9, 2, "#c76b32");
line(13, 27, 9, 16, 30, 9, 2, "#d97b37");
line(16, 30, 9, 22, 31, 9, 2, "#e78b41");
line(22, 31, 9, 26, 28, 9, 2, "#e78b41");
sphere(26, 28, 9, 2, "#f0ad68");
line(17, 29, 11, 19, 30, 11, 0, "#bd622f");
line(21, 31, 11, 23, 30, 11, 0, "#bd622f");

// Head tucked toward the viewer.
ellipsoid(29, 19, 11, 5.0, 5.0, 4.3, "#e68a42");
ellipsoid(29, 18, 12, 4.2, 3.6, 3.2, "#f3a65d");

// Upright triangular ears, with peach-pink inner fur.
for (const ex of [26, 32]) {
  box(ex - 2, 17, 14, ex + 2, 19, 15, "#d47839");
  box(ex - 1, 16, 16, ex + 1, 18, 17, "#e68a42");
  box(ex, 17, 18, ex, 18, 19, "#e68a42");
  box(ex, 15, 16, ex, 15, 17, "#df9b91");
}

// Cream muzzle and a tiny pink nose.
ellipsoid(28, 14, 9, 2.0, 1.2, 1.5, "#fff0d4");
ellipsoid(31, 14, 9, 2.0, 1.2, 1.5, "#fff0d4");
set(29, 12, 10, "#dc8582");
set(29, 13, 9, "#9a5846");

// Closed, smiling eyes.
set(25, 16, 12, "#704436");
set(26, 15, 11, "#704436");
set(27, 14, 11, "#704436");
set(31, 14, 11, "#704436");
set(32, 15, 11, "#704436");
set(33, 16, 12, "#704436");

// Whiskers and a few warm cheek flecks.
set(24, 15, 9, "#fff0d4");
set(25, 14, 9, "#fff0d4");
set(33, 14, 9, "#fff0d4");
set(34, 15, 9, "#fff0d4");
set(25, 16, 10, "#c87342");
set(33, 16, 10, "#c87342");