我想通过四元数进行一些旋转。关于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” –