[Math] How to determine the Tait-Bryan angles (yaw, pitch, and roll) of polyhedron faces to its center

3dpolyhedrarotations

I'm modeling a pentagonal hexecontrahedron by placing faces and then rotating them.

I've determined the center of each face by using the Cartesian coordinates of the vertices of its dual polyhedron (a snub dodecahedron). Now I need to determine the rotation of these faces in terms of yaw, pitch, and roll ($-\pi..\pi$ radians). The pentagon is irregular, so all three are important.

This question probably has an obvious answer, but it has been 30 years since I've dealt with vectors and matrices. (My searches seem to all result in discussions of flying airplanes.)

This recently posted question may be relevant, although it mentions only pitch and yaw. I prefer this type of geometric solution.

Best Answer

Expanding a bit of my comment into an answer, I would strongly suggest taking a different approach to your root problem: rather than geometrically determining the YPR values for each face, instead start by constructing the list of vertices for the pentagonal hexecontrahedron and represent your faces as lists of vertices. The vertices are easy to find: each corresponds to the center of a face on the snub dodecahedron, and since all the faces of that polyhedron are regular then the center of a face is just the mean of its vertices. Similarly, you can use the connectivity information you presumably have for the snub dodecahedron to build the same information for the hexecontrahedron: to determine the vertices that comprise a face, simply look at all the faces of the snub dodecahedron that include the hexecontrahedron's face's dual vertex.

Once you have the vertex and face information for the hexecontrahedron you can derive the orientational information (but for heaven's sake, use quaternions or rotation matrices instead of YPR unless you really have to! And if you do absolutely have to, you'll generally have more luck with the phrase 'Euler angles' than 'Tait-Bryan angles'), but for most purposes you're unlikely to actually need anything more than the vertex list and facial index list for the hexecontrahedron.