我目前正在尝试使用 Mathworks 的 Matlab 公式 Sph2Cart 将 2 个角度转换为 x、y、z
http://www.mathworks.com/help/techdoc/ref/sph2cart.html
算法:
x = r .* cos(elevation) .* cos(azimuth)
y = r .* cos(elevation) .* sin(azimuth)
z = r .* sin(elevation)
在 C++ 中
clax = 1 * cos((Altitude/360)*(2*XM_PI)) * cos((Azimuth/360)*(2*XM_PI));
clay = 1 * sin((Altitude/360)*(2*XM_PI));
claz = 1 * cos((Altitude/360)*(2*XM_PI)) * sin((Azimuth/360)*(2*XM_PI));
但无论 Altitude 和 Azimuth 是什么,clax、clay 和 claz 要么是 0 要么是 1。
我确定我犯了一个错误,之后我会笑我是多么愚蠢。但实际上,我不知道为什么这不起作用,为什么每个值只给出 1 或 0...
最佳答案
很可能,您将 clax
声明为某种整数类型(例如 int
、long
...)。否则,Altitude
或 Azimuth
可能被声明为整数类型。在那种情况下,您总是会在三角函数的参数中得到 2*pi
的倍数。
关于C++ 将角度转换为坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11919500/