# How do I determine the Tait-Bryan angles (yaw, pitch, and roll) of polyhedron faces to its center?

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.

• What would you use these angles for? – Muphrid Aug 18 '13 at 4:06
• This is an old refrain, but I cannot suggest strongly enough that you avoid yaw/pitch/roll. If you want to build the transform matrix from one face to another, that's fairly reasonable; if you want to directly construct faces as vertex sets, that probably works better; but YPR for something like this is actively painful. – Steven Stadnicki Aug 18 '13 at 4:52
• In a video game I play, I can build things by placing objects and rotating them. I can't simply connect the vertices. I don't mind using vectors and matrices, but since the centers of the faces of my polyhedron always face the origin (0, 0, 0), there may be a simpler trigonometric solution. – Jason Aug 19 '13 at 18:35

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.