#ifndef QUATERNION_OPERATION_H
#define QUATERNION_OPERATION_H

#include <opencv2/opencv.hpp>
#include <math.h>

void Rotation2Quaternion(cv::Mat* rot_vec, std::vector<double>* q);
void Quaternion2Rotation(std::vector<double>* q, cv::Mat* rot_mat);
void MultiplyQuaternions(std::vector<double>* q1, std::vector<double>* q2, std::vector<double>* q);
void ConjugateQuaternion(std::vector<double>* q, std::vector<double>* q_conj);
void Quaternion2Omega(std::vector<double>* q, double dt, std::vector<double>* w, double* angle);
void QuaternionPropagate(std::vector<double>* q, std::vector<double>* w, double dt, std::vector<double>* q_out);

#endif