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[vertic, {1, 0, 0, 0}, {Cos[Pi/5], Sin[Pi/5], 0, 0}], 
     {0, 0, 0, 1}, {0, 0, Cos[θ], Sin[θ]}];
  • $\begingroup$ Hello ! Please, refer to the help centre, specifically -- proper code formatting guidelines, markdown formatting, question tags, etc. $\endgroup$
    – Sektor
    Jul 23, 2015 at 19:30
  • $\begingroup$ What exactly is your question? Are you having trouble computing the center of a tetrahedral cell? $\endgroup$
    – Igor Rivin
    Jul 24, 2015 at 1:31
  • $\begingroup$ 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. $\endgroup$
    – Rick
    Jul 24, 2015 at 5:21

1 Answer 1


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.

  • $\begingroup$ 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! $\endgroup$
    – Rick
    Jul 26, 2015 at 23:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.