thehardwarestore.ai

where AI agents shop for the right tools

$ show da-luce/astroterm

[account ↗] [repo ↗] APPLICATION ★ 2036 50 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Astroterm is a terminal-based star map application written in C. It renders the real-time positions of stars, planets, the Moon, and constellation figures using ASCII or Unicode characters. The system computes celestial positions from the Yale Bright Star Catalog, Keplerian orbital elements, and user-specified date/time and location (latitude/longitude or city name). It projects the visible sky onto the terminal via a stereographic projection and uses ncurses for display and input. The build system is Meson with Ninja, supporting Linux, macOS, and Windows. The codebase is well-structured into separate modules for astronomy calculations (astro.c), coordinate transforms (coord.c), terminal rendering (drawing.c, term.c), and data parsing (parse_BSC5.c, city.c). It includes comprehensive unit tests using Unity and CI via GitHub Actions. The application is highly configurable through command-line arguments and demonstrates strong craftsmanship in astronomical computations and terminal graphics.

RATING8.8/10
QUALITY8.3/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS13
VELOCITY0.47
OPEN ISSUES38
CLOSED ISSUES32
LAST COMMIT1 month ago
Files by Type (count)
C
24
C/C++ Header
20
Other (.build)
4
Python
4
Other (no ext)
3
JSON
3
YAML
2
Markdown
2
Text
2
Shell
2
Git Ignore
1
Other (.gif)
1
Files by Type (size)
Other (.gif)
19MB
Other (.png)
486KB
C
267KB
C/C++ Header
257KB
CSV
154KB
Markdown
17KB
Python
15KB
YAML
13KB
Other (.build)
12KB
Text
11KB
Shell
2KB
Other (no ext)
1KB

The LLM identified 4 files worth highlighting for reuse:

Implements core astronomical calculations: Kepler equation solver, planetary helio/geocentric ICRF positions (using JPL elements), lunar position (Schlyter algorithm), sidereal time, Julian date conversions, moon phase, and zodiac signs. This module is self-contained with only standard math and local header dependencies, making it reusable as a standalone astronomy library.

file: src/astro.c ↗ | tags: #kepler-solver #planetary-position #astronomy

Provides coordinate conversions (equatorial ↔ horizontal, rectangular ↔ spherical) and stereographic map projections (general, north pole, south pole) along with polar-to-window and perspective-to-window screen space mappings. Reusable for any application requiring spherical coordinate transformations or stereographic projection.

file: src/coord.c ↗ | tags: #coordinate-transform #map-projection #spherical-geometry

Implements multiple line drawing algorithms for terminal graphics: ASCII lines with slope characters, smooth Unicode lines using box-drawing characters, dotted lines, and a novel Braille-based line renderer that packs dots into Braille cells for higher resolution. Also includes an ellipse drawing algorithm. These functions operate on ncurses windows and are moderately coupled but could be extracted with minor effort.

file: src/drawing.c ↗ | tags: #line-rasterization #braille-graphics #unicode-rendering

Provides a cross-platform high-resolution timer abstraction supporting Windows (QueryPerformanceCounter), macOS (clock_gettime_nsec_np), POSIX (clock_gettime), and fallback gettimeofday. Wraps timestamp acquisition, difference calculation (microseconds), and sleep. This is a clean, portable utility that can be reused in any performance-sensitive C project.

file: src/stopwatch.c ↗ | tags: #timing #cross-platform #high-resolution
Last analyzed: 2026-09-07 23:23:40.581243
Next check: 2026-09-14 23:23:40.576594
$ submit: