fogón

← AsiáticoObjeto 3Dfogon/grulla

Grulla

de fogonCC03136 bloques
GrullaArrastrá para girarlo
// «Grulla» · gpt-6-sol (medium)
// A red-crowned crane standing tall on long thin black legs: a white elongated body, black tail feathers and black neck, a small bright red patch on top of the head, a long pointed beak facing front (-y), wings folded with black tips.

const white = "#f2eee3";
const whiteLight = "#fff9ed";
const whiteShade = "#d8d6cf";
const black = "#202526";
const blackLight = "#353a39";
const blackDeep = "#131819";
const red = "#d72f27";

// Long dark legs, with a slight backward bend at the knees.
for (const x of [21, 28]) {
  line(x, 26, 25, x, 29, 13, 1, black);
  line(x, 29, 13, x, 25, 2, 1, blackDeep);
  sphere(x, 29, 13, 1.5, blackLight);
  line(x, 25, 2, x, 24, 0, 1, black);
  for (const dx of [-2, 0, 2]) {
    line(x, 24, 0, x + dx, 18, 0, 0, blackDeep);
  }
  line(x, 24, 0, x, 28, 0, 0, blackDeep);
}

// Full, elongated white body.
ellipsoid(24.5, 28, 28, 8, 11, 5.5, whiteShade);
ellipsoid(24.5, 27, 29, 8, 10, 5, white);
ellipsoid(24.5, 27, 31, 6.5, 8, 2.5, whiteLight);
ellipsoid(24.5, 25, 25, 5.5, 6, 2.5, whiteShade);

// Layered black tail feathers, pointing behind the crane.
for (const [x, z] of [[21, 29], [23, 30], [25, 30], [27, 29], [29, 28]]) {
  line(x, 35, z, x + (x - 25) * 0.25, 41, z - 2, 1, black);
  line(x, 37, z, x + (x - 25) * 0.3, 42, z - 3, 0, blackLight);
}

// Slender, curved black neck rising from the front of the breast.
line(24, 20, 28, 24, 18, 32, 2.5, black);
line(24, 18, 32, 24, 16, 36, 2, blackDeep);
line(24, 16, 36, 24, 15, 40, 1.7, black);
ellipsoid(24, 19, 29, 2, 2.5, 2, white);

// Head, pale cheeks, and unmistakable crimson crown.
ellipsoid(24, 14, 40, 3, 3.5, 2.5, white);
ellipsoid(24, 14.5, 41, 2.7, 3, 1.5, black);
ellipsoid(24, 13.3, 39.5, 2.8, 2.5, 1.2, whiteLight);
ellipsoid(24, 14.5, 42.5, 2.4, 2.2, 0.8, red);
box(23, 13, 43, 25, 15, 43, "#ed4940");

// Small dark eyes, visible from either side.
set(21, 12, 40, blackDeep);
set(27, 12, 40, blackDeep);

// Long, tapering beak aimed toward the viewer.
line(24, 11, 39, 24, 7, 39, 1, "#a69e79");
line(24, 7, 39, 24, 4, 38, 0, "#d5c79b");
set(24, 10, 40, "#e8d9ae");

// Each folded wing is a separate flapping part.
for (const side of [-1, 1]) {
  const shoulderX = side < 0 ? 18 : 31;
  const wingName = side < 0 ? "leftWing" : "rightWing";
  part(wingName, [shoulderX, 25, 30]);

  ellipsoid(shoulderX + side * 1.4, 28, 29, 3, 8, 2.5, whiteShade);
  ellipsoid(shoulderX + side * 1.6, 26, 30, 2.7, 6.5, 2, whiteLight);

  // Dark folded primaries make a bold edge along the rear of each wing.
  for (let i = 0; i < 4; i++) {
    const x = shoulderX + side * (2 + i * 0.45);
    line(x, 30 + i * 0.5, 28, x + side, 36 + i * 0.6, 26 - i * 0.3, 1, black);
  }
  line(shoulderX + side * 3, 25, 28,
       shoulderX + side * 4, 34, 27, 1, blackLight);

  animate(wingName, {
    type: "swing",
    axis: "y",
    speed: side < 0 ? 6 : -6,
    amplitude: 0.5
  });
}

part("body", [24, 24, 28]);