void Drawable::SetGLMatTraQuat(double *tra, double *quat, bool flip) { Rotation r; if (quat != 0) { CvMat cv_mat; cvInitMatHeader(&cv_mat, 4, 1, CV_64F, quat); r.SetQuaternion(&cv_mat); } int flp = 1; if (flip) { r.Transpose(); //flp=-1; } CvMat cv_gl_mat; cvInitMatHeader(&cv_gl_mat, 4, 4, CV_64F, gl_mat); cvZero(&cv_gl_mat); r.GetMatrix(&cv_gl_mat); cvSet2D(&cv_gl_mat, 0, 3, cvScalar(flp*tra[0])); cvSet2D(&cv_gl_mat, 1, 3, cvScalar(flp*tra[1])); cvSet2D(&cv_gl_mat, 2, 3, cvScalar(flp*tra[2])); cvSet2D(&cv_gl_mat, 3, 3, cvScalar(1)); cvTranspose(&cv_gl_mat, &cv_gl_mat); }