Я пытаюсь нарисовать максимальное (теоретическое) поле зрения спутника по его орбите. Я использую Basemap, на котором я хочу нанести разные положения по орбите (с разбросом), и я хотел бы добавить все поле зрения, используя метод tissot (или аналог). Приведенный ниже код работает нормально, пока широта не достигнет примерно 75 градусов северной широты на орбите высотой 300 км. После чего код выводит ValueError: «ValueError: неопределенная обратная геодезическая (может быть противоположной точкой)»
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import math
earth_radius = 6371000. # m
fig = plt.figure(figsize=(8, 6), edgecolor='w')
m = Basemap(projection='cyl', resolution='l',
llcrnrlat=-90, urcrnrlat=90,
llcrnrlon=-180, urcrnrlon=180)
# draw the coastlines on the empty map
m.drawcoastlines(color='k')
# define the position of the satellite
position = [300000., 75., 0.] # altitude, latitude, longitude
# radius needed by the tissot method
radius = math.degrees(math.acos(earth_radius / (earth_radius + position[0])))
m.tissot(position[2], position[1], radius, 100, facecolor='tab:blue', alpha=0.3)
m.scatter(position[2], position[1], marker='*', c='tab:red')
plt.show()
Следует отметить, что код отлично работает на южном полюсе (широта ниже -75). Я знаю, что это известная ошибка, есть ли известное решение этой проблемы? Спасибо за вашу помощь!