Platonic Solid Generation Problem

Hi,

I would like to generate some models that their faces are the same. I find that it is called Platonic Solid in gemoetry. 

However, I cannot find out the method on generating these kind of models. Is there any algorithms or sine and cosine combinations can generate these models?

Equations and constants can be used to calculate their vertex positions only.

You must draw the polygons yourself. It’s not hard to connect the points.

Just index the points, and setup each polygon face by hand.

Here are some resources. You may need to parse VRML or netlib format.

http://polyhedra.org/poly/
http://www.netlib.org/polyhedra/ (see next link for bugs)
http://www.georgehart.com/virtual-polyhedra/netlib-info.html

You can also construct shapes purely by code, assuming you have some supporting functionality that can create polygons. An example:

public Icosahedron(double r)
{
    double sq3 = System.Math.Sqrt(3.0);
    double sq5 = System.Math.Sqrt(5.0);
    double a = 2.0 / (1.0 + sq5);
    double b = System.Math.Sqrt((3.0 + sq5) / (1.0 + sq5));
    a /= b;

    MakePoint(      0,  r * a,  r / b );
    MakePoint(      0,  r * a, -r / b );
    MakePoint(      0, -r * a,  r / b );
    MakePoint(      0, -r * a, -r / b );
    MakePoint(  r * a,  r / b,      0 );
    MakePoint(  r * a, -r / b,      0 );
    MakePoint( -r * a,  r / b,      0 );
    MakePoint( -r * a, -r / b,      0 );
    MakePoint(  r / b,      0,  r * a );
    MakePoint(  r / b,      0, -r * a );
    MakePoint( -r / b,      0,  r * a );
    MakePoint( -r / b,      0, -r * a );

    MakePolygon( 1,  4,  6 );
    MakePolygon( 0,  6,  4 );
    MakePolygon( 0,  2, 10 );
    MakePolygon( 0,  8,  2 );
    MakePolygon( 1,  3,  9 );
    MakePolygon( 1, 11,  3 );
    MakePolygon( 2,  5,  7 );
    MakePolygon( 3,  7,  5 );
    MakePolygon( 6, 10, 11 );
    MakePolygon( 7, 11, 10 );
    MakePolygon( 4,  9,  8 );
    MakePolygon( 5,  8,  9 );
    MakePolygon( 0, 10,  6 );
    MakePolygon( 0,  4,  8 );
    MakePolygon( 1,  6, 11 );
    MakePolygon( 1,  9,  4 );
    MakePolygon( 3, 11,  7 );
    MakePolygon( 3,  5,  9 );
    MakePolygon( 2,  7, 10 );
    MakePolygon( 2,  8,  5 );
}

I have C# code for the following shapes: Cone, Cube, Cuboctahedron, Cylinder, Dodecahedron, Icosahedron, Octahedron, Quad, Tetrahedron, Sphere (slices and stacks). I also have C# code which (just barely…) loads VRML downloaded from polyhedra.org.