"""Map for plane-changes.qmd: launch tracks from Sriharikota on three headings. Great circles from the
pad, with the Earth's rotation during the ascent ignored. Run from sfm-slides/."""
import numpy as np
import _figfont                                # all figure text at one scale
import matplotlib.pyplot as plt
from _gt import draw_map
from _manstyle import INK, MAROON, BLUE, GREEN, AMBER

LAT, LON = np.radians(13.72), np.radians(80.23)


def track(az_deg, arc_deg=44.0):
    az, d = np.radians(az_deg), np.radians(np.linspace(0, arc_deg, 300))
    lat = np.arcsin(np.sin(LAT)*np.cos(d) + np.cos(LAT)*np.sin(d)*np.cos(az))
    lon = LON + np.arctan2(np.sin(az)*np.sin(d)*np.cos(LAT), np.cos(d) - np.sin(LAT)*np.sin(lat))
    return np.degrees(lon), np.degrees(lat)


fig, ax = plt.subplots(figsize=(10.4, 6.0))
draw_map(ax, 74, 126, -4, 23, grid=10)
for az, col, lab in ((90, MAROON, r"due east, $A=90^\circ$"), (104, GREEN, r"$A=104^\circ$"), (107, BLUE, r"$A=107^\circ$")):
    x, y = track(az)
    ax.plot(x, y, color=col, lw=2.4, zorder=5, label=lab)
ax.plot(np.degrees(LON), np.degrees(LAT), "*", color=AMBER, mec=INK, ms=18, zorder=9)
ax.text(np.degrees(LON) - 0.6, np.degrees(LAT) + 0.6, "Sriharikota", fontsize=11, weight="bold", ha="right")
for name, lon, lat in (("Sri Lanka", 80.7, 5.0), ("Thailand", 101.0, 16.6), ("Vietnam", 110.3, 15.6), ("Malay\npeninsula", 103.6, 2.4),
                       ("Sumatra", 97.5, -1.0), ("Borneo", 114.0, 0.2), ("Bay of Bengal", 88.5, 16.5), ("South China Sea", 115.5, 9.2)):
    ax.text(lon, lat, name, fontsize=10, style="italic", ha="center", va="center", color=INK, zorder=6)
ax.plot([93.0, 92.8, 92.5], [13.6, 12.0, 10.6], color="#a89f86", lw=4, solid_capstyle="round", zorder=4)   # too small for this coastline data
ax.text(88.7, 8.9, "Andaman\nIslands", fontsize=10, style="italic", ha="center", va="center", color=INK, zorder=6)
ax.set_xlabel("longitude (deg E)"); ax.set_ylabel("latitude (deg N)")
ax.set_aspect("equal")
ax.legend(frameon=True, facecolor="white", edgecolor="none", fontsize=10.5, loc="upper right")
fig.tight_layout()
fig.savefig("img/fig-man-plane-launch-map.png", dpi=160, bbox_inches="tight")
print("wrote img/fig-man-plane-launch-map.png")
