
次はオラフをプログラミングコードで描いてみました。
(リトルグリーンメンよりはクオリティ上がった…?)
とにかく関数を使いたい!!ということで、愚直に書いたコードです。
Processing
void setup()
{
size(800, 800);
}
void draw()
{
background(255);
noStroke();
fill(218, 219, 178);
rect(0, 300, 800, 600);
fill(64, 224, 208, 100);
rect(0, 200, 800, 200);
fill(160, 216, 239);
rect(0, 0, 800, 200);
fill(255, 66, 14);
circle(700, 100, 100);
Olaf(400, 450);
miniOlaf(120, 650);
miniOlaf(600, 750);
miniOlaf(680, 550);
}
void Olaf(int x, int y)
{
stroke(0);
strokeWeight(9);
fill(255);
ellipse(x, y, 390, 600);
arc(x-20, y-200, 190, 100, radians(180), radians(270));
arc(x+20, y-200, 190, 100, radians(270), radians(360));
circle(x-54, y-170, 100);
circle(x+54, y-170, 100);
fill(137, 172, 215);
arc(x, y-40, 280, 500, radians(0), radians(180));
fill(255);
quad(x-50, y, x+50, y, x+40, y+50, x-40, y+50);
fill(255);
arc(x, y-90, 320, 200, radians(0), radians(180));
fill(0);
circle(x-50, y-160, 40);
circle(x+50, y-170, 40);
strokeWeight(6);
stroke(178, 113, 0);
fill(255, 165, 0);
triangle(x, y-140, x-100, y-90, x+30, y-80);
stroke(0);
strokeWeight(9);
noFill();
arc(x-70, y-300, 140, 250, radians(270), radians(360));
arc(x+90, y-300, 140, 180, radians(180), radians(270));
arc(x-90, y-300, 140, 140, radians(270), radians(360));
arc(x-63, y-280, 130, 130, radians(240), radians(300));
}
void miniOlaf(int x, int y)
{
stroke(0);
strokeWeight(5);
fill(255);
ellipse(x, y+70, 80, 80);
ellipse(x, y, 100, 100);
ellipse(x-28, y+100, 40, 40);
ellipse(x+28, y+100, 40, 40);
fill(0);
ellipse(x-20, y-15, 20, 20);
ellipse(x+20, y-15, 20, 20);
noFill();
arc(x, y+10, 30, 30, radians(0), radians(180));
}