Я запутался в разнообразии имен для углов в сферических координатах. Согласно документации Матлаба, «азимут и возвышение являются угловыми смещениями в радианах, азимут - угол против часовой стрелки в плоскости ху, измеренный от положительной оси х. Высота - это угол места от плоскости ху.r - расстояние от начала координат до точка."Преобразование из декартовой в сферическую матрицу?
Хорошо, я назову азимутальным углом как Тета и угол места как 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) не одинаков?
Введите 'edit cart2sph' в окне команд, чтобы увидеть код. – horchler
@horchler, +1 за эту информацию. – CroCo