I think the most simple way of defining the 12 points of an icosahedron is to mark two points on each face of a 2x2x2 cube.
The points at +/- 0.618 on each face, perpendicular to the adjacent faces.
These 12 points are each joined to their 5 nearest neighbours, to give the wireframe of an icosahedron.
That will give me an icosahedron standing on one Edge.
How do I code to 'rotate'?? those points by atan(.618)
to bring one of those points to 0.0, 0.0, 1.175,
so that the 'icos' is now standing on a Point?
I would also want to 'rotatee' it so that it stands on a Face.
I can compute the relevant 12 points for each of these situations.
But to do the same for a 92 point 'geodome' would be rather difficult.
All the articles on 3D Rotations mention only one angle of rotation. Surely an angle on each axis needs considering.