我对球面坐标中角度的各种名称感到困惑。根据Matlab文档,“方位角和仰角是以弧度为单位的角位移。方位角是xy平面中从正x轴测量的逆时针角度。仰角是xy平面的仰角.r是从原点到原点的距离。一个点。”
好的,我将方位角称为Theta,仰角称为Phi。现在,我想构建一个将笛卡尔转换为球面的函数。这就是我所做的
function [y] = my_car2sph(x)
d = sqrt(x(1)^2 + x(2)^2 + x(3)^2);
Phi = acos(x(3)/d); % elevation angle
Theta = atan2(x(2),x(1)); % azimuth
y = [d; Theta; Phi];
现在,这个函数的输出
>> my_car2sph([1; 1; 1])
ans =
1.7321 <--- d
0.7854 <--- Theta (azimuth)
0.9553 <--- Phi (elevation)
现在,如果我使用Matlab的功能,这就是我得到的
>> [azimuth,elevation,r] = cart2sph(1,1,1)
azimuth =
0.7854
elevation =
0.6155
r =
1.7321
>>
为什么仰角(Phi)不一样?
答案 0 :(得分:1)
您对角度Phi
的定义是相对于垂直向上方向定义的,因此它在0到180度之间变化(称为Colatitude)。 Matlab测量x-y平面的垂直角度,因此它在-90到+90度(纬度)之间变化。对于这些类型的应用程序,我建议使用度数而不是弧度不要混淆。
因此,如果您执行Phi = asin(x(3)/d)
,则会获得与Matlab相同的结果。