#python #rotation #2d #point
#python #вращение #2d #точка
Вопрос:
У меня есть 4 координаты в wgs84:
north=39.92911484169648
south=39.88787873513176
east=16.60177886077772
west=16.57366683077252
Комбинируя их, я могу получить форму прямоугольника (NW, NE, SW, SE) и центр вышеупомянутого прямоугольника
39.90849678841412 16.587723359360467
Я последовал нескольким ответам здесь, в stackoverflow, чтобы перевести прямоугольник в ноль, повернуть точки на 70 градусов против часовой стрелки вокруг центра, а затем перевести обратно в исходные координаты (все на python).
def rotate(origin, point, angle):
"""
Rotate a point counterclockwise by a given angle around a given origin.
The angle should be given in radians.
"""
ox, oy = origin
px, py = point
qx = ox cos(angle) * (px - ox) - sin(angle) * (py - oy)
qy = oy sin(angle) * (px - ox) cos(angle) * (py - oy)
return qx, qy
Когда я печатаю обратно повернутые точки, по какой-то причине я правильно получаю ТОЛЬКО NE и SW. Я не могу понять причину этого. Я прикрепляю изображение, чтобы сделать его более четким, где белый прямоугольник сделан с начальными значениями, красный сделан с повернутой координатой, а зеленый — ожидаемый результат.
Распечатка результатов = белый: начальный; красный: повернутый с помощью приведенного выше кода; зеленый: ожидаемый
Можете ли вы помочь мне понять, почему и, возможно, предложить решение или указать, где моя ошибка?
Большое спасибо
Комментарии:
1. в чем причина
degrees(qx)
2. потому что числа были предварительно преобразованы в радианах
3. зачем преобразовывать координаты широты в радианы? Таким образом, входные данные rotate — это координаты в радианах, а результат — в градусах, это приведет к большой путанице / ошибкам
4. Я вижу. Я помню, что где-то это видел. Неважно, я удалил его сейчас, и я получаю точно такие же результаты
5. вы передаете методу rotate правильные координаты, неправильные точки соответствуют значениям других правильных точек