Метод простых декартовых и полярных координат

Попытка преобразовать некоторые декартовы в полярные координаты. Не математик. Начальное и конечное значения являются градусами. Имеет ли это смысл?

Point outerScreenPointBefore = CartesianToPolar(Start, End);  

Метод конвертера:

 private Point CartesianToPolar(double x, double y)
    {
        x = Math.Sqrt((x*x) + (y + y));
        y = Math.Atan2(y, x);

        return new Point(x, y);
    }

1 ответ

Решение

Не совсем. Когда вы делаете

y = Math.Atan2(y, x);

, х уже было присвоено новое значение в предыдущей строке:

x = Math.Sqrt((x*x) + (y*y));

Итак, вам нужно рассчитать оба значения, прежде чем назначать их:

double radius = Math.Sqrt((x*x) + (y*y));
double angle = Math.Atan2(y, x);
return new Point(radius, angle);

Полярные координаты используют не обозначения x и y, а r и θ, поэтому значение может быть неясным для того, кто читает ваш код.
Возможно, вы захотите создать новую структуру со свойствами Radius и Angle.

Другие вопросы по тегам