我想通過四元數進行一些旋轉。關於glm四元數旋轉
glm庫很好地完成了。
下面是我的代碼:
vec3 v(0.0f, 0.0f, 1.0f);
float deg = 45.0f * 0.5f;
quat q(glm::cos(glm::radians(deg)), 0, glm::sin(glm::radians(deg)), 0);
vec3 newv = q*v;
printf("v %f %f %f \n", newv[0], newv[1], newv[2]);
我的問題是,在許多文章由四元數旋轉的公式是
rotated_v = q*v*q_conj
這很奇怪。在glm中,向量「v」只是乘以四元數「q」就可以進行旋轉。
它讓我困惑。
事實上,我曾嘗試做q * v * q'來獲得旋轉矢量。但這是不正確的。 (cos(弧度(deg)),0,sin(弧度(deg)),0); quat q_conj =共軛(q); vec4 newv = vec4(0,v); newv = q * newv * q_conj;' 而我得到了(0.000000,0.000000,0.000000,1.000000) –
它看起來像什麼都不做。 –
我的代碼運作良好'季銨鹽TMP =混合物(m_init,m_end,t)的一個和平; vec3 res = tmp * m_initTargetVector * conjugate(tmp));'你不需要vec4「newv」 –