我需要帮助理解这段代码背后的数学。返回的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));
}
答案 0 :(得分:4)
正在计算单位向量的spherical coordinates phi
和theta
。
第一个分量(phi
)将是矢量和z轴之间的角度。第二个分量(theta
)将是xy平面上的角度。它假定向量可以表示如下:
x = cos theta sin phi
y = sin theta sin phi
z = cos phi
如果你解决了这个问题,你可以在函数中得到计算结果。将2 Pi
添加到y
只会确保角度介于0
和2 Pi
之间。