Преобразование декартовых координат в полярные координаты - 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);
Другие вопросы по тегам