2014-01-19 1 views
0

저는 구면 좌표계에서 각에 대한 다양한 이름과 혼동을 느낍니다. Matlab 문서에 따르면 "방위각과 고도는 라디안 단위의 각 변위이고, 방위각은 양의 x 축에서 측정 된 xy 평면의 반 시계 방향 각도이며 고도는 xy 평면에서의 높이입니다 r은 원점에서부터 요점."데카르트에서 구형으로 전환 MATLAB?

좋아요, 나는 방위각을 쎄타로, 그리고 고도 각을 Phi로 부를 것입니다. 이제 Cartesian을 Spherical로 변환하는 함수를 만들고 싶습니다. 내가 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) 

이제이 함수의 출력을했던 것입니다, 이것은 내가 갖는 것입니다

>> [azimuth,elevation,r] = cart2sph(1,1,1) 

azimuth = 

    0.7854 


elevation = 

    0.6155 


r = 

    1.7321 

>> 

왜 앙각 (Phi)은 동일하지 않습니까?

+1

명령 창에'edit cart2sph'라고 입력하면 코드를 볼 수 있습니다. – horchler

+0

@horchler, +1이 정보입니다. 답장을 보내 주셔서 감사합니다. – CroCo

답변

1

각도의 정의 Phi은 세로 위쪽 방향을 기준으로 정의하므로 0도에서 180도까지 다양합니다 (Colatitude라고 함). Matlab은 x-y 평면에서 수직 각도를 측정하므로 -90도에서 +90도까지 다양합니다 (Latitude). 이러한 종류의 응용 프로그램에서는 혼란 스러울 정도로 라디안이 아닌도를 사용하는 것이 좋습니다. Phi = asin(x(3)/d)을 수행하면 Matlab과 동일한 결과를 얻게됩니다.

+0

. 라디안을 사용해야합니다. 이 경우 어떻게해야합니까? – CroCo

+0

Cosd와 Sad를 참조하십시오. Matlab help – Guddu

+0

업데이트 된 답변보기 – Guddu