flag.frink

View or download flag.frink in plain text format


// This draws the American flag using the proper recommended proportions,
// which are rather surprising and make the flag very long and narrow.
// See: http://www.usflag.org/flagspecs.html

// Function to draw a star centered at cx, cy with radius r.
drawStar[g is graphics, cx, cy, r] :=
{
   angle = 0 degrees
   // Radius of inner points
   rr = r (-1 + sqrt[5])/(1+sqrt[5])
   p = new filledPolygon[]
   for i=1 to 5
   {
      p.addPoint[cx + r sin[angle], cy - r cos[angle]]  // Outer point
      p.addPoint[cx + rr sin[angle + 36 degrees],       // Inner point
                 cy - rr cos[angle + 36 degrees]]
      angle = angle + 72 degrees
   }
   g.add[p]
}

g = new graphics

// Draw red stripes
g.color[1,0,0]
for s=0 to 12 step 2
   g.fillRectSize[0, 1/13 * s, 1.9, 1/13]

// Draw blue rectangle
g.color[0,0,.5]                  // Dark Blue
g.fillRectSize[0, 0, 0.76, 7/13]

// Draw stars
g.color[1,1,1]                  // White

hSpacing = 0.063
vSpacing = 0.054
r = 0.0616/2
// Draw rows of 6
for y=vSpacing to 9 vSpacing step 2 vSpacing
   for x= hSpacing to 11 hSpacing step 2 hSpacing
      drawStar[g, x, y, r]

// Draw rows of 5
for y=2 vSpacing to 8 vSpacing step 2 vSpacing
   for x = 2 hSpacing to 10 hSpacing step 2 hSpacing
      drawStar[g, x, y, r]

// Draw outline
g.color[0,0,0]
g.drawRectSize[0, 0, 1.9, 1]

g.show[]   
//g.printTiled[2,1]


View or download flag.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 18014 days, 18 hours, 23 minutes ago.