An Algorithm For Fuller's World Map


The general overview of the algorithm I use is:

First...

  1. Understand layout of Icosahedron on sphere.
  2. Understand layout of map in plane.
  3. Define a "standard" spherical triangle into which all sphere points will get mapped to.
  4. Define a standard plane equilateral triangle into which all the standard spherical triangle points will get mapped to.

Then...

  1. Select a point P=(long. lat.) to be mapped to (x, y).
  2. Determine which of the 20 Icosahedron spherical triangles the point P1 falls within.
  3. Change the point's P1 coordinates to a corresponding point P2 in the "standard" spherical triangle.
  4. Determine the arc *distances* d1, d2, d3 along the three sides of the "standard" spherical triangle which uniquely identifies the location of the point P2.
  5. Use these same *distances* d1, d2, d3, along the flat edges of the standard *plane* equilateral triangle to define (at most) a small plane triangle. This small plane triangle will have (at most) 3 vertices V1, V2, V3.
  6. Calculate the average of (at most) V1, V2, V3 to get the point P3.
  7. Translate and rotate the point P3 onto the plane map. This depends on which Icosahedron spherical triangle the original point P1 was in.

We want to map any (longitude, latitude) coordinate of the World sphere to an (x, y) coordinate on the plane map.

We must first understand that the sphere is divided into 20 spherical triangles. This is "simply" the Icosahedron projected onto the world sphere. Fuller positioned the Icosahedron in a special way. (See this web page for a table of coordinates for the Icosahedron's 12 vertices.)

Because each of the 20 spherical triangles are the same shape and size, we only need to understnad how to transform an arbitrary point within a single triangle from (longitude, latitude) to (x, y).

So, the first step of the algorithm is to determine and remember which of the 20 spherical triangles the point is within.

This is accomplished by using the table of the 12 vertex coordinates and calculating the distance from the selected point P=(longitude, latitude) to each vertex.


Usage Note: My work is copyrighted. You may use my work but you may not include my work, or parts of it, in any for-profit project without my consent.

rwgray@rwgrayprojects.com