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 '15 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 '15 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 '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.

  • $\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 '15 at 23:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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