# 4D rotations of 600-cell to make cell centered stereographic projection

I have made a 600-cell wireframe model from Eric Weinsteins' 2/13/14 600-cell notebook (600-cell: a regular polytope, 4D, analogous to the icosahedron, with 600 tetrahedral cells, 120 vertices, 720 edges) in Mathematica, projected it onto the circumscribing unit sphere (it originally had a vertex at {0,0,0,1}, and rotated it so that the center of a tetrahedral face is centered on {0,0,0,1}. When I make a stereo-graphic projection using {0,0,0,1} as the north pole, it looks correct: the 3 edges nearest to {0,0,0,1} are largest. But I want to rotate the 600-cell to make the center of the tetrahedral cell, not the face, centered on {0,0,0,1}. I can't figure out how to do this. I'm using the RotationMatrix[{vec1, vec2}] command, where mapping the vertices moves vec1 to vec2. What should the 4D vectors be, and why?

If it helps, the first rotations to get the face centered on {0,0,0,1} were made by this code:

θ = FaceEdgeAngl["Icosahedron"];
rotate4[obj_, vec1_, vec2_] :=
Map[(RotationMatrix[{vec1, vec2}] . #)&, obj, {1}]
vertsrot =
rotate4[
rotate4[vertic, {1, 0, 0, 0}, {Cos[Pi/5], Sin[Pi/5], 0, 0}],
{0, 0, 0, 1}, {0, 0, Cos[θ], Sin[θ]}];

• Hello ! Please, refer to the help centre, specifically -- proper code formatting guidelines, markdown formatting, question tags, etc. – Sektor Jul 23 '15 at 19:30
• What exactly is your question? Are you having trouble computing the center of a tetrahedral cell? – Igor Rivin Jul 24 '15 at 1:31
• Yes, I don't know what vectors to put in to rotate the 600-cell vertices so that the center of the tetrahedral cell will center on {0,0,0,1}. Yes! Thank you Igor. Sorry if that was not clear. – Rick Jul 24 '15 at 5:21

From the documentation, RotationMatrix[{source, destin}] creates a rotation matrix that will rotate the vector source to the direction of vector destin. Let's apply this to your problem: rotate a face-centered projection to a cell-centered projection. Here destin is the origin

destin = {0,0,0,1};


and we need to determine the source vector, i.e., the vector at the center of some cell. Locate four vertices {vert1, vert2, vert3, vert4} of any cell (for example 4 of the 5 vertices closest to {0,0,0,1}). This may be the difficult part. Once you have found the vertices, just set

source = vert1 + vert2 + vert3 + vert4;
mat = RotationMatrix[{source, destin}];


Disclaimer: I do not know Wolfram Language; please feel free to correct language errors.

• Fritz, thank you! It's clear when I think about it. I was able to write a subroutine to find vertices near the center of one face (at {0,0,01} with distances less than the edge distance of the 600-cell. There were 5 (the three face vertices, and the vertices of the tetrahedrons on each side of the face) Eliminating one of these, I was able to rotate the cell to obtain the cell centered projection requested. Thanks again! – Rick Jul 26 '15 at 23:54