|
|
|
@ -668,17 +668,27 @@ namespace detail |
|
|
|
|
) |
|
|
|
|
{ |
|
|
|
|
detail::tmat3x3<T, P> Result(T(1)); |
|
|
|
|
Result[0][0] = 1 - 2 * q.y * q.y - 2 * q.z * q.z; |
|
|
|
|
Result[0][1] = 2 * q.x * q.y + 2 * q.w * q.z; |
|
|
|
|
Result[0][2] = 2 * q.x * q.z - 2 * q.w * q.y; |
|
|
|
|
|
|
|
|
|
Result[1][0] = 2 * q.x * q.y - 2 * q.w * q.z; |
|
|
|
|
Result[1][1] = 1 - 2 * q.x * q.x - 2 * q.z * q.z; |
|
|
|
|
Result[1][2] = 2 * q.y * q.z + 2 * q.w * q.x; |
|
|
|
|
|
|
|
|
|
Result[2][0] = 2 * q.x * q.z + 2 * q.w * q.y; |
|
|
|
|
Result[2][1] = 2 * q.y * q.z - 2 * q.w * q.x; |
|
|
|
|
Result[2][2] = 1 - 2 * q.x * q.x - 2 * q.y * q.y; |
|
|
|
|
T qxx(q.x * q.x); |
|
|
|
|
T qyy(q.y * q.y); |
|
|
|
|
T qzz(q.z * q.z); |
|
|
|
|
T qxz(q.x * q.z); |
|
|
|
|
T qxy(q.x * q.y); |
|
|
|
|
T qyz(q.y * q.z); |
|
|
|
|
T qwx(q.w * q.x); |
|
|
|
|
T qwy(q.w * q.y); |
|
|
|
|
T qwz(q.w * q.z); |
|
|
|
|
|
|
|
|
|
Result[0][0] = 1 - 2 * (qyy - qzz); |
|
|
|
|
Result[0][1] = 2 * (qxy + qwz); |
|
|
|
|
Result[0][2] = 2 * (qxz - qwy); |
|
|
|
|
|
|
|
|
|
Result[1][0] = 2 * (qxy - qwz); |
|
|
|
|
Result[1][1] = 1 - 2 * (qxx - qzz); |
|
|
|
|
Result[1][2] = 2 * (qyz + qwx); |
|
|
|
|
|
|
|
|
|
Result[2][0] = 2 * (qxz + qwy); |
|
|
|
|
Result[2][1] = 2 * (qyz - qwx); |
|
|
|
|
Result[2][2] = 1 - 2 * (qxx - qyy); |
|
|
|
|
return Result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|