上面为效果图,下面为源代码
源代码
function setup()
{
createCanvas(640, 480);
angleMode(DEGREES);
}
function draw()
{
background(200);
strokeWeight(0);
//头发
fill(150, 10, 100);
arc(300,150,110,110,180,0);
fill(255, 245, 238);
ellipse(300, 150, 80, 85);
fill(150, 10, 100);
beginShape();
vertex(270, 110);
vertex(290, 140);
vertex(315, 135);
vertex(310, 100);
endShape(CLOSE);
beginShape();
vertex(300, 120);
vertex(340, 140);
vertex(330, 110);
vertex(300, 100);
endShape(CLOSE);
beginShape();
vertex(280, 110);
vertex(280, 140);
vertex(260, 120);
endShape(CLOSE);
beginShape();
vertex(260, 115);
vertex(240, 190);
vertex(260, 210);
vertex(270, 120);
endShape(CLOSE);
beginShape();
vertex(246, 140);
vertex(235, 190);
vertex(260, 160);
endShape(CLOSE);
beginShape();
vertex(354, 140);
vertex(360, 190);
vertex(350, 175);
vertex(348, 185);
vertex(330, 160);
endShape(CLOSE);
//挑染
fill(250, 110, 100);
beginShape();
vertex(265, 140);
vertex(255, 200);
vertex(260, 210);
vertex(270, 120);
endShape(CLOSE);
fill(150, 10, 100);
beginShape();
vertex(335, 130);
vertex(330, 210);
vertex(355, 190);
vertex(350, 150);
endShape(CLOSE);
fill(250, 110, 100);
beginShape();
ellipse(300,235,60,100);
endShape(CLOSE);
//裙子
fill(250,150,180);
beginShape();
quad(272,250,328,250,360,285,245,285);
endShape(CLOSE);
fill(200,100,100);
beginShape();
ellipse(270,225,40,40);
ellipse(330,225,40,40);
endShape(CLOSE);
fill(255, 245, 238);
beginShape();
ellipse(280,225,28,23);
ellipse(320,225,28,23);
endShape(CLOSE);
fill(255, 245, 238);
beginShape();
rect(283, 184, 35, 11);
triangle(283,195,318,195,300,215);
endShape(CLOSE);
//挑染
fill(250, 110, 100);
beginShape();
vertex(335, 140);
vertex(330, 210);
vertex(335, 210);
vertex(335, 190);
endShape(CLOSE);
beginShape();
vertex(280, 125);
vertex(290, 140);
vertex(295, 139);
endShape(CLOSE);
//眼睛
fill(150, 110, 80);
beginShape();
ellipse(317, 150, 15, 15);
ellipse(285, 150, 15, 15);
endShape(CLOSE);
fill(0);
beginShape();
ellipse(317,152,9,8);
ellipse(285,152,9,8);
endShape(CLOSE);
//红晕
fill(255, 195, 103);
beginShape();
ellipse(275,168,8,5);
ellipse(325,168,8,5);
endShape(CLOSE);
//嘴巴
fill("pink");
beginShape();
arc(300,175, 25,20,0,180);
endShape(CLOSE);
}
以上为全部代码,没什么技巧,主要就是点的位置和arc(),ellipse(),vertex()等函数的应用。arc()函数为圆弧函数,图像的嘴巴和脑袋都用到了此函数,ellipse()函数主要用于脸和身体;
除此之外,还有fill()函数填充颜色,对于适当的区域填充适当的颜色,注意,此函数不可以放入beginShape()和endShape()中,这样会造成颜色被覆盖,p5.js里面前面的颜色会被后面的颜色覆盖,因此代码段的位置也不可改变。
beginShape()和endShape()用于区分函数段,绘制图形的时候不至于上一个函数覆盖下一个。