Realizacje01

AstroZenitniebo policzone od zera.

Rok
2026
Rola
Projekt, silnik graficzny, obliczenia, wdrożenie
Kategoria
Aplikacja / Własny silnik graficzny
Na żywo
astrozenit.pl

Wyzwanie

Polskich map nieba w przeglądarce właściwie nie ma, a te zagraniczne pokazują gwiazdozbiory pod angielskimi nazwami i nie odpowiadają na pytanie, czy dziś w ogóle warto wychodzić z domu. Oczywistą drogą było wzięcie gotowego silnika Stellarium, ale on stoi na licencji AGPL v3, która przy serwisie internetowym wymusza otwarcie źródeł całej strony. Musiałem więc napisać silnik rysowania od zera i zmieścić się z pełną klatką w budżecie, który pozwala płynnie przewijać czas.

Proces

  1. /01

    Licencja przed pierwszą linijką

    Sprawdzenie warunków AGPL przesądziło o architekturze: dane ze Stellarium tak (CC BY-SA 4.0), kod silnika nie. Ta decyzja zapadła zanim powstał pierwszy piksel.

  2. /02

    Własny silnik na Canvas 2D

    Rzut stereograficzny, katalog gwiazd, figury gwiazdozbiorów po numerach HIP i granice IAU. Bez WebGL i bez biblioteki 3D.

  3. /03

    Matematyka zamiast rysowania po pikselach

    Horyzont w tym rzucie jest okręgiem o środku (0, 2 ctg h) i promieniu 2/|sin h|, więc liczę go analitycznie zamiast próbkować. Pozycje przeliczam przy zmianie czasu albo miejsca, nigdy przy przesuwaniu mapy.

  4. /04

    Sześć otwartych źródeł danych

    Panorama Drogi Mlecznej z ESO, tekstury planet z Solar System Scope, elementy orbitalne satelitów z Celestraku, pogoda z Open-Meteo, kafelki map z OpenStreetMap. Wszystko na wolnych licencjach, z podaniem autorstwa.

  5. /05

    Ocena warunków obserwacji

    Zapas jasności ponad próg widoczności, zachmurzenie i zamglenie mnożą się przez siebie, a nie sumują. Pierwsza wersja dodawała punkty i wychodziło jej, że Jowisz o dziewiątej rano jest doskonale widoczny.

  6. /06

    Kontrole zamiast zaufania

    Osobne skrypty sprawdzają efemerydy i ocenę warunków przy każdym budowaniu. Fazę Księżyca zweryfikowałem pomiarem udziału jasnych pikseli dla siedmiu faz, nie na oko.

Rozwiązanie

Aplikacja pokazuje niebo dokładnie z Twojego miejsca i o dowolnej godzinie: gwiazdy, figury gwiazdozbiorów, planety z teksturami powierzchni, fazy Księżyca, przeloty satelitów i prognozę zachmurzenia. Czas przewija się płynnie, bo pełna klatka kosztuje około milisekundy przy 1440×900. Kalendarz odpowiada na pytanie kiedy, sekcja zjawisk tłumaczy co i na co patrzeć. Całość po polsku, z nazwami gwiazdozbiorów w poprawnym dopełniaczu.

  • React 19
  • TypeScript
  • Vite
  • Canvas 2D
  • zustand
  • satellite.js
  • IndexedDB
  • Open-Meteo

Efekty

~1 ms

na klatkę przy 1440×900

0

kodu na licencji AGPL w silniku

6

otwartych źródeł danych

Następny projekt (02)

Psi Azymut