Это то, чего я пытаюсь достичь:

Когда сфера в трехмерном пространстве выглядит так:

Вот код для перемещение точек:
Код: Выделить всё
def __move_point(point, width, height, dx, dy): # dx and dy are in degrees
lat, long = __convert_to_lat_long(point[0], point[1], width, height)
new_lat = lat + dy
new_long = long - dx
new_lat = np.clip(new_lat, -90, 90) # np is numpy
if new_long < -180:
new_long += 360
elif new_long > 180:
new_long -= 360
return __convert_to_xy(new_lat, new_long, width, height)
def __convert_to_lat_long(x, y, width, height):
latitude = (0.5 - (y / height)) * 180
longitude = ((x / width) - 0.5) * 360
return (latitude, longitude)
def __convert_to_xy(lat, long, width, height):
x = (long / 360 + 0.5) * width
y = (0.5 - lat / 180) * height
return (int(x), int(y))

и после запуска кода:

Существует много информации о том, как это сделать с декартовыми координатами, но я Я намеренно не использую декартовы координаты.
Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/787 ... erting-the