Download or view drawDymaxion.frink in plain text format
/** Draws the countries of the world using the Buckminster Fuller "Dymaxion"
icosahedral projection.
*/
use Country.frink
use geometry.frink
use Dymaxion.frink
g = new graphics
g.stroke[0.1 degree]
g.font["SansSerif", "bold", 1.5 degree]
for [code, country] = Country.getCountryList[]
{
cc = new color[randomFloat[0,1], randomFloat[0,1], randomFloat[0,1], .8]
first = true
for poly = country.borders
{
p = new filledPolygon
pl = new polyline
for [long, lat] = poly
{
[x,y, tri] = Dymaxion.latLongToXY[lat degree, long degree]
p.addPoint[x,-y]
p.addPoint[x,-y]
}
g.color[cc]
g.add[p]
g.color[0,0,0,0.5]
g.add[pl]
// Draw country names. The polygons in Country.frink are sorted so
// that the largest polygon is first. Label only the largest.
if first
{
[clong, clat] = polygonCentroid[poly]
g.color[0,0,0]
[x,y] = Dymaxion.latLongToXY[clat degree, clong degree]
g.text[code, x, -y]
}
first = false
}
}
// Draw the numbers of the "triangles" used in the projection.
/*g.font["SansSerif" , 2 deg]
for lat = -90 deg to 90 deg step 10 deg
for long = -180 deg to 180 deg step 10 deg
{
[x,y,tri] = Dymaxion.latLongToXY[lat, long]
text=format[lat,deg,0] + "," + format[long,deg,0]
g.text[tri,x,-y]
}
*/
// Draw lines of latitude
/*
g.color[0.5, 0.5, 0.5, 0.5]
for lat = -90 deg to 90 deg step 10 deg
{
p = new polyline
lasttri = 0
for long = -180 deg to 180 deg step 1 deg
{
[x,y,tri,lcd] = Dymaxion.latLongToXY[lat, long]
text=format[lat,deg,0] + "," + format[long,deg,0]
if (lasttri == tri)
p.addPoint[x,-y]
else
{
g.add[p]
p = new polyline
}
lasttri = tri
}
g.add[p]
}
// Draw lines of longitude
g.color[0.5, 0.5, 0.5, 0.5]
for long = -180 deg to 180 deg step 10 deg
{
p = new polyline
lasttri = 0
for lat = -90 deg to 90 deg step 1 deg
{
[x,y,tri,lcd] = Dymaxion.latLongToXY[lat, long]
text=format[lat,deg,0] + "," + format[long,deg,0]
if (lasttri == tri)
p.addPoint[x,-y]
else
{
g.add[p]
p = new polyline
}
lasttri = tri
}
g.add[p]
} */
g.show[]
//g.write["world.svg", 1000, 500]
g.write["world.png", 1000, 500]
Download or view drawDymaxion.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 20217 days, 15 hours, 44 minutes ago.