The 3x3 rotation matrix of the unit quaternion q (columns: the rotated axes).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | q(4) |
unit quaternion [x, y, z, w] |
pure function quat_to_matrix(q) result(m) real(wp), intent(in) :: q(4) !! unit quaternion [x, y, z, w] real(wp) :: m(3,3) real(wp) :: x, y, z, w x = q(1); y = q(2); z = q(3); w = q(4) m(1,1) = 1.0_wp - 2.0_wp * (y*y + z*z) m(2,1) = 2.0_wp * (x*y + z*w) m(3,1) = 2.0_wp * (x*z - y*w) m(1,2) = 2.0_wp * (x*y - z*w) m(2,2) = 1.0_wp - 2.0_wp * (x*x + z*z) m(3,2) = 2.0_wp * (y*z + x*w) m(1,3) = 2.0_wp * (x*z + y*w) m(2,3) = 2.0_wp * (y*z - x*w) m(3,3) = 1.0_wp - 2.0_wp * (x*x + y*y) end function quat_to_matrix