fogón

← Pirates and sea3D assetfogon/pirata-con-garfio

Pirata con garfio

by fogonCC08331 blocks
Pirata con garfioDrag to turn it
// «Pirata con garfio» · gpt-6-sol (medium)
// A tall thin cartoon pirate facing -y with a long purple coat, a black tricorn hat with a big white feather, a thin curled black mustache, and a shiny silver hook instead of the left hand, the right hand holding a small pistol-shaped flintlock.

const purple = "#66359a";
const purpleLight = "#8753bb";
const purpleDark = "#47206f";
const gold = "#f4be3d";
const goldLight = "#ffe078";
const black = "#20212b";
const blackLight = "#393946";
const skin = "#e9ae78";
const skinLight = "#ffd09b";
const brown = "#70442f";
const silver = "#d9e8ed";
const silverDark = "#829ba8";

// Long coat and narrow torso.
box(17, 20, 18, 31, 29, 30, purple);
box(17, 19, 23, 31, 20, 30, purpleLight);
box(18, 20, 29, 30, 28, 31, purpleLight);
box(15, 21, 14, 19, 30, 21, purpleDark);
box(29, 21, 14, 33, 30, 21, purpleDark);
box(16, 20, 16, 19, 29, 20, purple);
box(29, 20, 16, 32, 29, 20, purple);
box(16, 20, 14, 19, 29, 14, gold);
box(29, 20, 14, 32, 29, 14, gold);
box(15, 19, 17, 15, 28, 20, gold);
box(33, 19, 17, 33, 28, 20, gold);

// Open lapels, striped shirt, and sash.
box(21, 18, 22, 27, 19, 29, "#fff0cf");
for (let z = 23; z <= 27; z += 2) box(22, 17, z, 26, 18, z, "#d84948");
line(18, 18, 29, 22, 17, 23, 1, purpleDark);
line(30, 18, 29, 26, 17, 23, 1, purpleDark);
line(19, 17, 29, 22, 16, 24, 0, gold);
line(29, 17, 29, 26, 16, 24, 0, gold);
box(18, 18, 20, 30, 29, 21, brown);
box(18, 17, 21, 30, 18, 21, gold);
box(23, 16, 19, 26, 17, 22, gold);
box(24, 15, 20, 25, 16, 21, brown);
for (let z of [24, 27]) {
  set(20, 17, z, goldLight);
  set(28, 17, z, goldLight);
}

// Neck and friendly face.
box(22, 21, 30, 26, 26, 33, skin);
ellipsoid(24, 23, 35, 6, 5, 5, skin);
box(20, 18, 36, 28, 19, 38, skinLight);
box(22, 16, 32, 26, 18, 35, skin);
box(23, 15, 33, 25, 16, 34, skinLight);
box(19, 21, 33, 19, 24, 35, skinLight);
box(29, 21, 33, 29, 24, 35, skinLight);
for (let x of [21, 27]) {
  box(x, 17, 36, x + 1, 17, 37, black);
  set(x, 16, 37, "#ffffff");
}
box(21, 17, 39, 22, 17, 39, brown);
box(27, 17, 39, 28, 17, 39, brown);

// A fine mustache with raised, curled ends.
line(20, 16, 32, 23, 15, 33, 0, black);
line(25, 15, 33, 28, 16, 32, 0, black);
set(19, 16, 33, black);
set(19, 16, 34, black);
set(29, 16, 33, black);
set(29, 16, 34, black);
box(23, 17, 31, 25, 17, 31, brown);

// Black tricorn: broad upturned corners and a raised crown.
box(17, 20, 39, 31, 29, 42, black);
box(19, 21, 43, 29, 27, 43, blackLight);
box(13, 16, 39, 35, 29, 40, black);
box(12, 15, 40, 36, 19, 41, blackLight);
for (let x = 10; x <= 38; x++) {
  const tip = Math.abs(x - 24);
  const bottom = tip > 10 ? 41 : 39;
  const top = tip > 12 ? 44 : tip > 9 ? 43 : tip > 6 ? 42 : 41;
  box(x, 15, bottom, x, 18, top, x % 5 === 0 ? blackLight : black);
  set(x, 14, bottom, gold);
}
box(17, 14, 40, 31, 14, 40, gold);
box(21, 14, 41, 27, 14, 42, black);
set(23, 13, 42, "#ffffff");
set(25, 13, 42, "#ffffff");
box(23, 13, 41, 25, 13, 41, "#ffffff");
set(22, 13, 40, "#ffffff");
set(26, 13, 40, "#ffffff");

// Oversized white feather, arcing out of the hat.
line(29, 15, 41, 32, 14, 44, 0, silverDark);
line(32, 14, 44, 35, 14, 45, 0, silverDark);
line(29, 14, 42, 32, 13, 44, 1, "#ffffff");
line(31, 13, 44, 35, 13, 45, 1, "#fffdf1");
line(32, 13, 44, 36, 12, 44, 0, "#ffffff");
set(34, 12, 43, "#ffffff");
set(36, 13, 45, "#ffffff");

// Each leg pivots independently at the hip.
part("leftLeg", [20, 24, 17]);
box(17, 21, 7, 22, 27, 17, "#384253");
box(17, 20, 8, 22, 21, 15, "#515c6a");
box(17, 20, 0, 22, 28, 7, brown);
box(16, 16, 0, 23, 26, 3, "#583728");
box(17, 16, 3, 22, 18, 3, "#93613b");
box(17, 19, 7, 22, 28, 7, gold);
animate("leftLeg", { type: "swing", axis: "x", speed: 5, amplitude: 0.3 });

part("rightLeg", [28, 24, 17]);
box(26, 21, 7, 31, 27, 17, "#384253");
box(26, 20, 8, 31, 21, 15, "#515c6a");
box(26, 20, 0, 31, 28, 7, brown);
box(25, 16, 0, 32, 26, 3, "#583728");
box(26, 16, 3, 31, 18, 3, "#93613b");
box(26, 19, 7, 31, 28, 7, gold);
animate("rightLeg", { type: "swing", axis: "x", speed: -5, amplitude: 0.3 });

// Pirate's right arm (viewer left), holding a little flintlock.
part("rightArm", [16, 24, 29]);
box(12, 21, 21, 17, 28, 29, purple);
box(12, 20, 23, 13, 27, 28, purpleLight);
box(12, 20, 20, 17, 28, 21, gold);
box(13, 21, 17, 16, 25, 19, skin);
box(12, 18, 17, 15, 22, 19, skinLight);
// Brown grip, silver barrel pointing forward, and hammer.
box(11, 17, 15, 14, 21, 18, brown);
box(10, 12, 19, 14, 20, 20, brown);
box(10, 11, 20, 14, 19, 20, gold);
box(11, 9, 20, 13, 19, 21, silverDark);
box(11, 10, 21, 13, 17, 21, silver);
box(10, 9, 19, 14, 10, 21, gold);
box(13, 16, 22, 14, 18, 23, black);
set(14, 15, 23, silver);
animate("rightArm", { type: "swing", axis: "x", speed: 5, amplitude: 0.25 });

// Pirate's left arm (viewer right), ending in a bright silver hook.
part("leftArm", [32, 24, 29]);
box(31, 21, 21, 36, 28, 29, purple);
box(35, 20, 23, 36, 27, 28, purpleLight);
box(31, 20, 20, 36, 28, 21, gold);
box(33, 21, 17, 36, 26, 19, brown);
box(33, 20, 17, 36, 26, 17, gold);
box(34, 20, 15, 35, 23, 17, silverDark);
line(35, 21, 16, 38, 21, 16, 1, silver);
line(38, 21, 16, 40, 21, 19, 1, silver);
line(40, 21, 19, 39, 21, 21, 1, silver);
line(39, 21, 21, 37, 21, 22, 1, silver);
set(40, 20, 19, "#ffffff");
set(39, 20, 21, "#ffffff");
animate("leftArm", { type: "swing", axis: "x", speed: -5, amplitude: 0.25 });

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