Although not noted explicitly in the specifications page section that describes "Molecular and atomic hydrogen (HI+H2) galaxy contents," (Section (i)), courtesy of Diemer et al, 2018 and 2019, the posted HI+H2 files have an "align_ang_mom_vector" variable that "contains the unit vector to which the galaxy was aligned (i.e., its rotation axis)." As also described in the 2018 paper, the other relevant variable, "align_success," defines "success" "as having found enough (>50) gas or stellar particles within the gas half-mass radius." (Clarifying quotes via email exchange with Benedikt Diemer, whom I thank.) The description that follows, of how to take advantage of this information, uses Julia formatting.
If I call the alignment vector vDiemer, with components p, q, and r, i.e., vDiemer = [p, q, r], I can build a rotation matrix, R, such that R operating on the vector, R*vDiemer, yields a vector, vZ, with its only non-zero component, equalling one, along the positive z direction. Let rootOMp2 = sqrt(1 - p^2); the 3X3 rotation matrix R = [rootOMp2 -p*q/rootOMp2 -p*r/rootOMp2; 0 r/rootOMp2 -q/rootOMp2; p q r].
I agree wholeheartedly with the statement in the Wikipedia article, "Rotation Matrix," that "The interpretation of a rotation matrix can be subject to many ambiguities.'' These ambiguities arise mostly from the differences between rotating the coordinate system and rotating the vector. Differences in the way that different (program language) packages treat the matrix can add to the ambiguity.
I work with Julia's ReferenceFrameRotations package to use quaternions to rotate the vectors (avoiding trigonometric functions and possible gimbal lock; a good tutorial on Euler angles and quaternions can be downloaded here). Instead of R as written above, I need its transpose, from which I obtain the quaternion, q , that yields vZ = q*vDiemer*conj(q), where conj(q) is the conjugate of q.
Although not noted explicitly in the specifications page section that describes "Molecular and atomic hydrogen (HI+H2) galaxy contents," (Section (i)), courtesy of Diemer et al, 2018 and 2019, the posted HI+H2 files have an "align_ang_mom_vector" variable that "contains the unit vector to which the galaxy was aligned (i.e., its rotation axis)." As also described in the 2018 paper, the other relevant variable, "align_success," defines "success" "as having found enough (>50) gas or stellar particles within the gas half-mass radius." (Clarifying quotes via email exchange with Benedikt Diemer, whom I thank.) The description that follows, of how to take advantage of this information, uses Julia formatting.
If I call the alignment vector vDiemer, with components p, q, and r, i.e., vDiemer = [p, q, r], I can build a rotation matrix, R, such that R operating on the vector, R*vDiemer, yields a vector, vZ, with its only non-zero component, equalling one, along the positive z direction. Let rootOMp2 = sqrt(1 - p^2); the 3X3 rotation matrix R = [rootOMp2 -p*q/rootOMp2 -p*r/rootOMp2; 0 r/rootOMp2 -q/rootOMp2; p q r].
I agree wholeheartedly with the statement in the Wikipedia article, "Rotation Matrix," that "The interpretation of a rotation matrix can be subject to many ambiguities.'' These ambiguities arise mostly from the differences between rotating the coordinate system and rotating the vector. Differences in the way that different (program language) packages treat the matrix can add to the ambiguity.
I work with Julia's ReferenceFrameRotations package to use quaternions to rotate the vectors (avoiding trigonometric functions and possible gimbal lock; a good tutorial on Euler angles and quaternions can be downloaded here). Instead of R as written above, I need its transpose, from which I obtain the quaternion, q , that yields vZ = q*vDiemer*conj(q), where conj(q) is the conjugate of q.