Coordinates of the vertices of an icosahedron on a circumscribed sphere

Linguofreak

Well-known member
Joined
May 10, 2008
Messages
5,192
Reaction score
1,425
Points
188
Location
Dallas, TX
Given the following:

1) An icosahedron with a circumscribed sphere.
2) The latitude and longitude on the circumscribed sphere of one vertex of the icosahedron.
3) An angle (modulo 72 degrees because each vertex has 5 edges) corresponding to the bearing from the given vertex to one of the five vertices that is on the opposite end of an edge from the given vertex.

does anybody know how to calculate the coordinates of the remaining vertices of the icosahedron?

EDIT: Read "coordinates" as "latitude and longitude". It could be read as "3D Cartesian coordinates", but that's not what I want
 
Last edited:
That gives the spherical coordinates for the case where the first vertex is on the north (or south) pole of the sphere, which I'd already figured out.

What I'm looking for is how to calculate the spherical coordinates of the other vertexes from an arbitrarily placed first vertex (plus an angle).
 
Well, the way to go about doing that is by going through Cartesian coordinates first.

I won't go through all details, but I assume you can convert from lat/lon to cartesian (if the sphere radius is known).

I'll now go through the steps to get a rotation matrix.

Your specification is the same as knowing the coordinates of two points. So for now I'll assume you know

- coordinates of two different points on the icosahedron that has a vertex at each pole; let these vertices be A and B

- coordinates of two different points on the icosahedron that is oriented the way you need it; let these vertices be A' and B'

A, B, A' and B' are therefore all position vectors, with the sphere center as origin point.

Use the cross product to define

C = AxB
C' = A'xB'

let

Vx = A/length(A)
aux = B - <Vx,B>*Vx where <> is dot product
Vy = aux/length(aux)
Vz = C/length(C)

similar formulas for Vx' etc.

Now, you need a rotation matrix R such that R*Vx = Vx' etc

Then define

M1: a 3x3 matrix where the columns are the vectors Vx, Vy and Vz (in this order)

M2: a similar matrix, whose columns are Vx', Vy', Vz'.

Then R = M2*inverse(M1)

Now that you know R, you can apply it to the Cartesian coordinates of all icosahedron points. Once you get the new Cartesian coordinates, convert them to lat/lon.

I presume there will be questions about a few steps, or the preparation. Feel free to ask.

Cheers.
 
Last edited:
Truth is I don't understand the question even less the answer.
But I am "blown away" that it could be sorted in less then a day.
The standard of help available within this / our little group never fails to amaze me.
 
Back
Top