diff --git a/glm/gtx/matrix_decompose.inl b/glm/gtx/matrix_decompose.inl index 694f5eca..aa4386af 100644 --- a/glm/gtx/matrix_decompose.inl +++ b/glm/gtx/matrix_decompose.inl @@ -172,12 +172,18 @@ namespace detail j = Next[i]; k = Next[j]; +# ifdef GLM_FORCE_QUAT_DATA_XYZW + int off = 0; +# else + int off = 1; +# endif + root = sqrt(Row[i][i] - Row[j][j] - Row[k][k] + static_cast(1.0)); - Orientation[i] = static_cast(0.5) * root; + Orientation[i + off] = static_cast(0.5) * root; root = static_cast(0.5) / root; - Orientation[j] = root * (Row[i][j] + Row[j][i]); - Orientation[k] = root * (Row[i][k] + Row[k][i]); + Orientation[j + off] = root * (Row[i][j] + Row[j][i]); + Orientation[k + off] = root * (Row[i][k] + Row[k][i]); Orientation.w = root * (Row[j][k] - Row[k][j]); } // End if <= 0