# WVR_ConvertMatrixQuaternion¶

`WVR_EXPORT void WVR_ConvertMatrixQuaternion(WVR_Matrix4f_t * mat, WVR_Quatf_t * quat, bool m2q)`

Function to transform between the rotation matrix and quaternion.

A convenient utility to apply the specified transform between the rotation matrix and quaternion.

Version
API Level 1
Parameters
• `mat`: Input rotation matrix. (refer to WVR_Matrix4f)
• `quat`: Input quaternion. (refer to WVR_Quatf)
• `m2q`: True converts the rotation matrix to quaternion, false converts the quaternion to rotation matrix.

## How to use¶

Here is an example for the function:

```#include <wvr/wvr_device.h>

WVR_Quatf_t hvrQuat;
WVR_Matrix4f_t Matrix4;
bool M2Q = false; // true: Matrix to Quaternion, flase: Quaternion to Matrix

for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
Matrix4.m[i][j] = 0.0f;
}
}

hvrQuat.w = 1.0f;
hvrQuat.x = 0.0f;
hvrQuat.y = 0.0f;
hvrQuat.z = 0.0f;

WVR_ConvertMatrixQuaternion(&Matrix4, &hvrQuat, M2Q);

// After conversion, Matrix4.m[i][j] will be:
//    [ 1 0 0  x]
//    [ 0 1 0  y]
//    [ 0 0 1  z]
//    [ 0 0 0  1]
// The rotation matrix can be obtained by this conversion:
//   Quaternion    ===>     Rotation Matrix
//     w = 1                    [ 1 0 0 ]
//     x = 0                    [ 0 1 0 ]
//     y = 0                    [ 0 0 1 ]
//     z = 0
```