
SGP4/SDP4 orbit propagation with pass prediction, naked-eye visibility, look angles, ground tracks and GeoJSON-ready footprints; validated against independent reference vectors for varied orbit regimes.
A Kotlin Multiplatform orbital mechanics library — SGP4/SDP4 propagation, pass prediction and GeoJSON.
Licensed under the Apache License 2.0
OrbitCore is a satellite orbit propagation library written entirely in Kotlin. Give it a satellite's orbital elements (from a TLE / Celestrak's JSON GP format) and an instant in time, and it tells you where the satellite is — and whether, when, and how it can be seen from anywhere on Earth.
It's built as a Kotlin Multiplatform library, so the same code can be compiled for every platform Kotlin supports and integrated into whatever system you need — a JVM backend, an Android app, an iOS app, a native Linux service, and more, all sharing the exact same propagation logic and test suite.
Satellite API — position and velocity (TEME), sub-satellite point
(lat/lon/altitude), ground speed, orbital period, look angles (azimuth/elevation/range) from
any observer on the ground, geometric and naked-eye visibility (accounting for sunlight and
the observer's twilight), and next-pass prediction (AOS/TCA/LOS with maximum elevation).Feature / FeatureCollection, RFC 7946) — MapLibre, Mapbox,
Leaflet, Google Maps and virtually every other map library speak GeoJSON natively, so
there's no glue code needed between this library and a map.OrbitCore publishes artifacts for JVM, Android, iOS (arm64 and simulator arm64), Linux (x64), JS and Wasm/JS, so any of them can be consumed directly as a Kotlin dependency.
JS and Wasm/JS bindings are published, but their JS/TS-idiomatic ergonomics (clean TypeScript
types instead of raw Kotlin types like Instant in exported signatures) aren't finished yet —
the artifacts exist, direct JS/TS interop is still a work in progress.
OrbitCore is published on Maven Central as com.parodison:orbit-core.
Version catalog (libs.versions.toml):
[versions]
orbit-core = "0.1.0"
[libraries]
orbit-core = { module = "com.parodison:orbit-core", version.ref = "orbit-core" }Then, in your module's build.gradle.kts:
dependencies {
implementation(libs.orbit.core)
}Or without a version catalog:
dependencies {
implementation("com.parodison:orbit-core:0.1.0")
}Apache License 2.0 — see LICENSE.
A Kotlin Multiplatform orbital mechanics library — SGP4/SDP4 propagation, pass prediction and GeoJSON.
Licensed under the Apache License 2.0
OrbitCore is a satellite orbit propagation library written entirely in Kotlin. Give it a satellite's orbital elements (from a TLE / Celestrak's JSON GP format) and an instant in time, and it tells you where the satellite is — and whether, when, and how it can be seen from anywhere on Earth.
It's built as a Kotlin Multiplatform library, so the same code can be compiled for every platform Kotlin supports and integrated into whatever system you need — a JVM backend, an Android app, an iOS app, a native Linux service, and more, all sharing the exact same propagation logic and test suite.
Satellite API — position and velocity (TEME), sub-satellite point
(lat/lon/altitude), ground speed, orbital period, look angles (azimuth/elevation/range) from
any observer on the ground, geometric and naked-eye visibility (accounting for sunlight and
the observer's twilight), and next-pass prediction (AOS/TCA/LOS with maximum elevation).Feature / FeatureCollection, RFC 7946) — MapLibre, Mapbox,
Leaflet, Google Maps and virtually every other map library speak GeoJSON natively, so
there's no glue code needed between this library and a map.OrbitCore publishes artifacts for JVM, Android, iOS (arm64 and simulator arm64), Linux (x64), JS and Wasm/JS, so any of them can be consumed directly as a Kotlin dependency.
JS and Wasm/JS bindings are published, but their JS/TS-idiomatic ergonomics (clean TypeScript
types instead of raw Kotlin types like Instant in exported signatures) aren't finished yet —
the artifacts exist, direct JS/TS interop is still a work in progress.
OrbitCore is published on Maven Central as com.parodison:orbit-core.
Version catalog (libs.versions.toml):
[versions]
orbit-core = "0.1.0"
[libraries]
orbit-core = { module = "com.parodison:orbit-core", version.ref = "orbit-core" }Then, in your module's build.gradle.kts:
dependencies {
implementation(libs.orbit.core)
}Or without a version catalog:
dependencies {
implementation("com.parodison:orbit-core:0.1.0")
}Apache License 2.0 — see LICENSE.