xxxxxxxxxx
242
function setup() {
createCanvas(400, 600);
}
function draw() {
background(220);
strokeWeight(3);
//hair layer 1
fill(96, 80, 133);
beginShape();
vertex(234, 107);
bezierVertex(223.5, 86, 177, 86, 165.5, 107);
bezierVertex(165.5, 107, 148, 109.5, 148.5, 139);
bezierVertex(148.5, 139, 114, 164, 123.5, 201.5);
bezierVertex(133, 238.5, 92, 227.5, 98, 263.5);
bezierVertex(98, 263.5, 101, 249, 118, 245.5);
bezierVertex(125.5, 244, 156, 236, 144, 192);
bezierVertex(144, 192, 137, 171, 160, 147);
vertex(160, 147);
vertex(240, 147);
bezierVertex(263.5, 170.5, 256, 192, 256, 192);
bezierVertex(244.5, 236, 274.5, 243, 282.45, 245);
bezierVertex(302, 249, 301.5, 263, 301.5, 263);
bezierVertex(307.5, 227.5, 267, 238, 276.5, 201.5);
bezierVertex(286, 164, 251.5, 139.5, 251.5, 139.5);
bezierVertex(253.5, 109, 234, 107, 234, 107);
vertex(234, 107);
endShape();
//cat
drawCat(145.5, 134, -4, 5);
drawCat(245, 133.5, 1, 5);
//hair layer 2
beginShape();
vertex(164, 118)
bezierVertex(164, 118, 144.8, 143.5, 161, 159.5);
vertex(238, 159.5);
bezierVertex(238, 159.5, 251.5, 138.5, 242, 122);
endShape();
//ears
drawEar(162, 159);
drawEar(237, 159);
//face
fill(253, 231, 214);
push()
noStroke();
beginShape();
vertex(181, 130);
bezierVertex(159, 148.5, 167.5, 175, 178.5, 180);
vertex(221, 180);
bezierVertex(231.5, 176, 231.5, 165, 231.5, 165);
bezierVertex(232.5, 135.5, 219, 150, 219.5, 118);
bezierVertex(215.5, 141, 221, 144.5, 221, 144.5);
bezierVertex(214.5, 155.5, 190, 145, 190, 145);
vertex(184.5, 150);
bezierVertex(177.5, 144, 181, 130, 181, 130);
endShape();
pop()
bezier(167.5, 160.5, 168, 170, 167.5, 175, 178.5, 180);
vertex(221, 180);
bezier(221, 180, 231.5, 176, 231.5, 165, 231.5, 165);
drawFace();
//draw hair details
drawHairDetails();
//body
drawBody();
//legs
drawLegs();
push();
drawLegs();
translate(width, 0); // Move to the right edge
scale(-1, 1); // Flip horizontally
pop();
}
function drawCat(x, y, xOffset, yOffset) {
push();
fill(135);
translate(x + xOffset, y + yOffset);
beginShape();
vertex(0, 0);
bezierVertex(-1, 2, 0, 4, 0, 4);
bezierVertex(0, 4, -7.5, 14, 3.5, 18);
bezierVertex(16, 21.5, 14, 7.5, 14, 7.5);
vertex(14.5, 3.5);
vertex(9.5, 5);
vertex(3, 4);
vertex(0, 0);
endShape();
pop();
}
function drawEar(earX, earY) {
push();
angleMode(DEGREES);
fill(253, 231, 214);
ellipse(earX, earY, 15, 20);
pop();
}
function drawHairDetails() {
push();
noFill();
bezier(162, 142, 162, 142, 165, 152, 158.5, 165.5);
bezier(158.5, 165.5, 153, 179, 161.5, 184.5, 164, 186);
bezier(175, 133, 175, 133, 172.5, 146, 173, 149);
bezier(186.5, 108, 186.5, 108, 173.5, 144, 184.5, 150);
bezier(188.5, 144, 188.5, 144, 198, 150, 213, 149);
bezier(213, 149, 213, 149, 193.5, 152, 200, 134);
bezier(219.5, 118, 219.5, 118, 215.5, 139.5, 221, 144.5);
bezier(223, 135, 223, 135, 222.5, 138, 226, 141.5);
bezier(226, 141.5, 231.5, 147, 230, 152, 230, 152);
bezier(237, 141.5, 237, 141.5, 237, 149, 240, 159);
bezier(240, 159, 244.5, 180, 235.5, 185, 235.5, 185);
pop();
}
function drawFace() {
push()
bezier(167.5, 153.5, 175.5, 151.5, 184, 152.5, 189, 156.5);
bezier(186, 164.5, 182.5, 167.5, 177, 167, 177, 167);
circle(172, 166, 1);
fill("black")
beginShape();
vertex(174, 153);
bezierVertex(174.5, 154, 173, 155, 173, 156);
bezierVertex(173, 160, 175.5, 163, 178.5, 163);
bezierVertex(181.5, 163, 184, 160, 184, 156);
bezierVertex(184, 155.5, 184, 155, 183.5, 154);
bezierVertex(181.5, 153.5, 178, 153, 174, 153);
endShape();
//reflect
translate(width, 0);
scale(-1, 1);
bezier(167.5, 153.5, 175.5, 151.5, 184, 152.5, 189, 156.5);
bezier(186, 164.5, 182.5, 167.5, 177, 167, 177, 167);
circle(172, 166, 1);
fill("black")
beginShape();
vertex(174, 153);
bezierVertex(174.5, 154, 173, 155, 173, 156);
bezierVertex(173, 160, 175.5, 163, 178.5, 163);
bezierVertex(181.5, 163, 184, 160, 184, 156);
bezierVertex(184, 155.5, 184, 155, 183.5, 154);
bezierVertex(181.5, 153.5, 178, 153, 174, 153);
endShape();
pop()
}
function drawBody() {
fill("white")
beginShape();
vertex(200,180.5);
bezierVertex(178, 180.5, 160, 198.5, 160, 220.5);
vertex(160, 287.5);
vertex(240, 287.5);
vertex(240, 220.5);
bezierVertex(240, 198.5, 222, 180.5, 200, 180.5);
endShape();
}
function drawLegs() {
fill(81, 69, 62);
rect(158, 287.5, 83.5, 9);
fill(237, 143, 88);
rect(158, 296.5, 39, 20);
beginShape();
vertex(160, 316);
vertex(161.5, 369);
bezierVertex(161.5, 369, 157.5, 424, 161, 434);
vertex(192, 434);
bezierVertex(192, 434, 192, 409, 196, 391);
bezierVertex(199, 373, 196, 316, 196, 316);
vertex(160, 316);
endShape();
fill(81, 69, 62);
rect(190.5, 373, 7.5, 3.5);
rect(189, 385, 9, 5.5);
beginShape();
vertex(158, 378);
vertex(159, 383);
vertex(169.5, 379.5);
vertex(168, 376);
vertex(158, 378);
endShape();
beginShape();
vertex(172, 365);
vertex(167.5, 374);
vertex(167, 375);
vertex(169.5, 392.5);
bezierVertex(170, 394.5, 171.5, 396, 174, 396);
vertex(185, 396);
bezierVertex(187, 396, 189, 394.5, 189, 392.5);
vertex(191.5, 369);
bezierVertex(192, 367, 190, 364.5, 188, 364.5);
vertex(176.5, 362.5);
bezierVertex(175, 362.5, 173, 363.5, 172, 365);
endShape();
beginShape();
vertex(163.5,434);
bezierVertex(163.5, 440.5, 165, 444, 165, 444);
vertex(189, 444);
bezierVertex(189, 444, 192, 441, 192, 434);
vertex(163.5,434);
endShape();
beginShape();
vertex(167.5, 444);
vertex(167.5, 460.5);
bezierVertex(151, 464.5, 149, 478.5, 149, 490);
vertex(187.5, 490);
vertex(187.5, 444);
vertex(167.5, 444);
endShape();
//reflect
translate(width, 0);
scale(-1, 1);
}