Flag Of South Korea
// South Korea
// Reference: http://en.wikipedia.org/wiki/Flag_of_South_Korea#Specifications
int kHeight = 330; // The only number that needs changing
size(kHeight*3/2, kHeight);
noStroke();
smooth();
color blueColor = color(0x00,0x34,0x78);
color whiteColor = color(255,255,255);
color blackColor = color(0,0,0);
color redColor = color(0xC6,0x0C,0x30);
float circWidth = width/3;
float triWidth = circWidth/2.0;
float barHeight = circWidth/12.0;
float barDist = circWidth/12.0 + circWidth/24.0;
float triBase = circWidth/4.0;
float rotAngle = atan2(height/2, width/2);
// Background white field
background(whiteColor);
// Draw taegeuk figure
pushMatrix();
translate(width/2, height/2);
rotate(rotAngle);
fill(redColor);
arc(0,0,circWidth, circWidth, 0, TWO_PI);
fill(blueColor);
arc(0,0,circWidth, circWidth, 0, PI);
ellipse(circWidth/4,0, circWidth/2, circWidth/2);
fill(redColor);
ellipse(-circWidth/4,0, circWidth/2, circWidth/2);
popMatrix();
// Bit patterns on trigrams
int[] trigrams = {0,5,7,2};
noStroke();
for (int t = 0; t < 4; ++t) {
pushMatrix();
translate(width/2, height/2);
switch (t) {
case 0: rotate(rotAngle); break;
case 1: rotate(PI-rotAngle); break;
case 2: rotate(PI+rotAngle); break;
case 3: rotate(-rotAngle); break;
}
for (int b = 0; b < 3; ++b) {
float x1 = circWidth/2 + triBase + barDist*b;
float y1= -circWidth/4;
fill(blackColor);
rect(x1,y1, barHeight, triWidth);
if ((trigrams[t] & (1 << b)) == 0)
{
// white block
fill(whiteColor);
rect(x1-2,-circWidth/48, barHeight+4, circWidth/24);
}
}
popMatrix();
}