欧拉角的计算

Calculation of euler angles

我需要帮助来理解这段代码背后的数学原理。返回的 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));
}

正在计算单位向量的spherical coordinatesphitheta

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

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

如果你解决了这个问题,你就会在你的函数中得到计算。将 2 Pi 添加到 y 只是确保角度在 02 Pi.

之间