我很困惑球体坐标中各种角度的名称。根据Matlab的文档,“方位角和仰角是以弧度为单位的角度位移,方位角是从x轴正向测量的xy平面内的逆时针角度,仰角是从xy平面起的仰角,r是从原点到一个点。”好的,我会称方位角为Theta,仰角为Phi。现在,我想要构建一个将笛卡儿转换为球面的函数。这是我做过什么从笛卡儿转换为球形matlab?
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)不一样?
在命令窗口中键入'edit cart2sph'来查看代码。 – horchler
@horchler,对此信息+1。 – CroCo