#!/usr/bin/env python3
"""Plot extracted cylindrical sections for modeling reference."""

from __future__ import annotations

import json
import math
import sys
from pathlib import Path

import matplotlib.pyplot as plt


def main() -> None:
    source = Path(sys.argv[1])
    output = Path(sys.argv[2])
    data = json.loads(source.read_text(encoding="utf-8"))
    sections = data["sections"]
    columns = 5
    rows = math.ceil(len(sections) / columns)
    figure, axes = plt.subplots(rows, columns, figsize=(15, 3 * rows), sharex=True, sharey=True)
    for axis, (angle, points) in zip(axes.flat, sections.items()):
        x = [p[0] for p in points]
        y = [p[1] for p in points]
        axis.scatter(x, y, s=2.5, alpha=0.45, color="#2563eb", linewidths=0)
        axis.set_title(f"theta {angle} deg · n={len(points)}")
        axis.grid(alpha=0.2)
        axis.set_xlim(0.78, 1.02)
        axis.set_ylim(-0.25, 0.25)
        axis.set_aspect("equal", adjustable="box")
    for axis in axes.flat[len(sections):]:
        axis.axis("off")
    figure.suptitle("Original ring cylindrical cross-sections (radius vs z)", fontsize=16)
    figure.tight_layout()
    figure.savefig(output, dpi=180)


if __name__ == "__main__":
    main()
