Преобразование декартовых координат в полярные координаты - Matlab
У меня возникла проблема на протяжении всего процесса преобразования: преобразование декартовой в полярную, а затем обратно в декартовую систему для подтверждения того, что мое первоначальное преобразование прошло успешно.
Но по какой-то причине, когда я преобразую обратно в декартовы координаты с полярными координатами из третьего квадранта, мой x
а также y
значения неверны.
Возьмите эту часть моего кода, например:
x = -2.075548439;
y = -2.481775416;
if x < 0 && y < 0 % QUAD 3
radius = sqrt( (x^2) + (y^2) );
theta = atand( (y*-1)/(x*-1) );
theta = (270 - theta);
end
x = radius * cosd(theta);
y = radius * sind(theta);
% answer: x = -2.481775416, and y = -2.075548439
Все остальные x
а также y
преобразования, которые попадают в другие три квадранта положить x
а также y
вернуться в правильном порядке.
Эта часть кода, однако, ставит x
а также y
вернуться в правильном порядке:
x = 3.130287009;
y = -0.50613326;
if x > 0 && y < 0 % QUAD 4
radius = sqrt( (x^2) + (y^2) );
theta = atand( (y*-1)/(x) );
theta = (360 - theta);
end
x = radius * cosd(theta);
y = radius * sind(theta);
% answer: x = 3.130287009, and y = -0.50613326
1 ответ
Вам не нужно проверять на особые случаи. Следующий код правильно преобразует из декартовой в полярную для точек в любом квадранте.
x = -2.075548439;
y = -2.481775416;
radius = sqrt( (x^2) + (y^2) );
theta = atan2d( y, x );
x = radius * cosd(theta);
y = radius * sind(theta);