kingdom / scripts /generate_preview.py
kinaar111's picture
Polish: README, Help tab, presets, preview thumbnail
e2fffc3 verified
Raw
History Blame Contribute Delete
1.5 kB
#!/usr/bin/env python3
"""Generate README / Space thumbnail preview for Hopf visualizer."""
from __future__ import annotations
import sys
from pathlib import Path
import matplotlib.pyplot as plt
import numpy as np
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "src"))
from kingdom.core.hopf import sample_fiber_family
OUT = ROOT / "app" / "assets" / "hopf_preview.png"
COLORS = ("#1a8fe3", "#00c9b7", "#4cc9f0", "#48bfe3", "#64dfdf", "#c9a227")
def main() -> None:
fibers = sample_fiber_family(n_fibers=10, n_points=140)
fig, ax = plt.subplots(figsize=(10, 6), facecolor="#0a1628")
ax.set_facecolor("#0a1628")
for i, fiber in enumerate(fibers):
ax.plot(
fiber["px"],
fiber["py"],
color=COLORS[i % len(COLORS)],
linewidth=2.2,
alpha=0.9,
)
ax.set_title(
"Kingdom Come — Hopf Fibration (stereographic xy)",
color="#e8f4ff",
fontsize=14,
pad=12,
)
ax.set_xlabel("x", color="#8ecae6")
ax.set_ylabel("y", color="#8ecae6")
ax.tick_params(colors="#8ecae6")
for spine in ax.spines.values():
spine.set_color("#1e3a5f")
ax.set_aspect("equal")
ax.grid(True, color="#1e3a5f", alpha=0.35)
OUT.parent.mkdir(parents=True, exist_ok=True)
fig.savefig(OUT, dpi=150, bbox_inches="tight", facecolor=fig.get_facecolor())
plt.close(fig)
print(f"Wrote {OUT}")
if __name__ == "__main__":
main()