The product a*b: rotating by b, then by a.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | a(4) |
quaternions [x, y, z, w] |
||
| real(kind=wp), | intent(in) | :: | b(4) |
quaternions [x, y, z, w] |
pure function quat_multiply(a, b) result(q) real(wp), intent(in) :: a(4), b(4) !! quaternions [x, y, z, w] real(wp) :: q(4) q(1) = a(4) * b(1) + a(1) * b(4) + a(2) * b(3) - a(3) * b(2) q(2) = a(4) * b(2) - a(1) * b(3) + a(2) * b(4) + a(3) * b(1) q(3) = a(4) * b(3) + a(1) * b(2) - a(2) * b(1) + a(3) * b(4) q(4) = a(4) * b(4) - a(1) * b(1) - a(2) * b(2) - a(3) * b(3) end function quat_multiply