欧拉角的计算

时间:2016-09-07 12:18:03

标签: c++ glm-math

我需要帮助理解这段代码背后的数学。返回的vec2的x分量和返回的vec2的y分量。有人可以向我解释他们代表什么。我只知道这个函数确定了矢量在球体坐标中的位置。

glm::vec2 calcEulerAngles(const glm::vec3& vec)
{
  glm::vec3 v = glm::normalize(vec);
  glm::vec2 result(acos(v.z), atan2(v.y, v.x));
  while (result.y < 0.0)
    result.y += TwoPi;

  return glm::vec2(glm::degrees(result.x), glm::degrees(result.y));
}

1 个答案:

答案 0 :(得分:4)

正在计算单位向量的spherical coordinates phitheta

第一个分量(phi)将是矢量和z轴之间的角度。第二个分量(theta)将是xy平面上的角度。它假定向量可以表示如下:

x = cos theta sin phi
y = sin theta sin phi
z =           cos phi

如果你解决了这个问题,你可以在函数中得到计算结果。将2 Pi添加到y只会确保角度介于02 Pi之间。

相关问题