Пакет Java, который преобразует прямоугольные координаты в полярные координаты - PullRequest
0 голосов
/ 03 марта 2010

Мне нужно преобразовать прямоугольные координаты в полярные координаты. Можете ли вы порекомендовать библиотеку, которую я могу использовать, я бы не стал писать это сам.

Используется для понимания метаданных, включенных в файлы астрономических изображений.

Ответы [ 3 ]

1 голос
/ 03 марта 2010

это не похоже на 2 функции? Конечно, вы можете просто найти его на любом языке и конвертировать самостоятельно.

вот мой код, чтобы сделать прямоугольный -> полярный (другой способ очень прост) в C ++

Vector3 C2P (const Vector3 &v)
{
        float PI=3.14159260f;
        Vector3 polar;
       polar.x = v.Length();

       if (v.z > 0.0f) {
              polar.y = (float) atan ( v.z/sqrt (v.x * v.x + v.y * v.y));
       }
       else if (v.z < 0.0f) {
               polar.y = (float) -atan (sqrt (v.x * v.x + v.y * v.y) / v.z);
        }
        else {

                polar.y = 0.0;
        }


        if (v.x > 0.0f) {
                polar.z = (float) atan (v.y / v.x);
        }
        else if (v.x < 0.0f) {
               polar.z = (float) atan (v.y / v.x) + PI;
        }
        else if (v.y > 0) {
                polar.z = PI * 0.5f;
      }
     else {
              polar.z = -PI * 0.5f;
        }
       //polar.z=(polar.z/M_PI)*180;
       //polar.y=(polar.y/M_PI)*180;
       return polar;
}

обратите внимание, что в радианах результат равен x = длина, y = angle1 z = angle2.

EDIT: под моим кодом я имею в виду некоторый код, который я украл откуда-то и использовал как один раз.

1 голос
/ 02 апреля 2010

Вы запрашиваете Картографическая проекция Библиотека. Одна из самых популярных библиотек с открытым исходным кодом - PROJ.4 , и есть одна Java-реализация .

Вы должны решить, какую проекцию вы хотите использовать. У них разные свойства. Mercator является распространенным и используется Google Maps. Недостаток Mercator в том, что вы не можете использовать его вокруг полюсов arcitc.

1 голос
/ 03 марта 2010

Я почти уверен, что стандартная библиотека уже имеет это. Если существуют типы мнимых чисел, они делают именно это (real = x, imag = y, arg (val) = угол, abs (val) = радиус). Использование математической библиотеки (atan2, sin, cos и sqrt) также не так сложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...