Для описания положения точки P плоскости x0y можно использовать полярные координатыr и φ, где r – расстояние от точки P до начала координат, называемого полюсом; φ – угол, образованный лучом 0P с положительным направлением оси 0x (полярной осью). Полярные координаты точки связаны с ее декартовыми прямоугольными координатами простыми соотношениями:
или
Координатными линиями в полярной системе координат являются концентрические окружности и лучи .
Рис. 5. Координатные линии в полярной системе координат.
Как перевести полярные координаты в декартовые
По теме
Биология
Человек
Анатомия
Работа организма
Нервная система
Дыхание и кровообращение
Пищеварительная система
Иммунная система
Мышечная система и движение
Размножение
Животные
Растения
Клетка и ДНК
Наследственность и генетика
Внешняя геодинамика
Внутренняя геодинамика
Экосистемы
Климат и атмосфера
Вода
Почва
Угроза для окружающей среды
Механика
Сила
Simple machine
Float or sink?
Masses and springs
Addition of forces
Вибрации и волны
Вибрация
волны
Интерференция и дифракция
Свет
Тени
Зрение и цвета
Магнетизм
Магнит и компас
Магнитное поле
Электрический заряд
Электрическое поле
Электрический потенциал
Электрическая цепь
Выработка и распределение
Квантовая физика и теория относительности
Физика частиц
Солнечная система
Земля, Солнце и Луна
Космические технология
Структура материи
Свойства материи
Хими́ческая реа́кция
Опыты
Электроника
Машины и процессы
Измерительные инструменты
Анализ
Функции
Интегралы и производные
Последовательность
Система координат
Геометрические формы
Преобразования пространства
Изображения в разрезе
Қазақстан
Canada
UK
Рассылки
Licenses
Контакты
⚠ A maintenance operation is scheduled for November 4, 2023. The EduMedia site and associated services will not be available during this time. Thank you for understanding.
Средства математики
Геометрия
Система координат
Преобразовать полярные координаты в декартовы
Есть довольно простой алгоритм, известный, наверное, всем со школы.
def polar2cart(r,phi): x = r*math.cos(phi) y = r*math.sin(phi) return x,y
В питоне, кстати, в модуле cmath есть даже функции rect/polar, которые в принципе делают тоже самое. Но они это делают для этого числа. А мне надо в numpy для двух одномерных векторов. и на выходе получить двумерный вектор (всех возможных вариантов, декартово произведение). Можно, конечно, сделать тупо циклом for или генератором списков.
rs = numpy.arange(0,100) phis = numpy.arange(0,math.pi,math.pi/360) xs = [r*math.cos(phi) for r in rs for phi in phis] ys = [r*math.sin(phi) for r in rs for phi in phis]
Но это наверное неэффективно. Можно как-то тоже самое сделать векторными операциями numpy?
xs = rs*numpy.cos(phis) ys = rs*numpy.sin(phis)
но ругается, что размерность неправильная. На выходе мне надо получить два двухмерных массива numpy. чтобы они были xs.shape == (rs.shape, phis.shape) (ну то есть для примера выше 100×360)
Вариант с генератором списков работает, но наверное он не Ъ, и это скажется, если я увеличу размер выборки. 🙂
Помогите пожалуйста преобразовать полярные координаты в декартовы. Возвращает не верный результат. Что не так?
//координаты в полярной системе (в радианах) longitude = 0.820304; longitude = 0.64577; r = 6371; //радиус Земли //получаем декартовы координаты x = r * cos(latitude) * cos(longitude); y = r * cos(latitude) * sin(longitude); z = r * sin(latitude);
Два раза присваиваете разные значения longitude, вот что.
Только если пишете «возвращает неверный результат», пожалуйста, указывайте, что именно возвращает и что, по вашему мнению, является верным результатом.
Ariki писал(а): Два раза присваиваете разные значения longitude, вот что.
Да, я переводил с Java в математический вид и просто ошибся. Вот мой исходный код:
//координаты в полярной системе double lat = 47; double lon = 37; //переводим в радианы double lat_radian = Math.toRadians(lat); double lon_radian = Math.toRadians(lon); final double r = 6371.; // Радиус Земли //получаем декартовы координаты double x = r * cos(lat_radian) * cos(lon_radian); double y = r * cos(lat_radian) * sin(lon_radian); double z = r * sin(lat_radian);
Перевод в радианы верный. Проверял.
Ariki писал(а): Только если пишете «возвращает неверный результат», пожалуйста, указывайте, что именно возвращает и что, по вашему мнению, является верным результатом.
Вот тут получаю заведомо верный результат преобразования: http://keisan.casio.com/exec/system/1223527679 LatLng(47,37) возвращает в декартовых: x=37.5359 y=28.2853
Тот-же результат выдает и на другом web-ресурсе. У меня же по формуле получается: x=3437.3313957 y=2642.7014421
P.S. Читал документацию, что дал trip. Различий в формулах не нашел.