
NKTgLaw
Experimenting with the NKTg Law – Interpolating the Mass of 8 Planets using NASA Data in Rust
Hi everyone ,
I’ve been experimenting with a physics-inspired principle called the NKTg Law of Variable Inertia.
It connects position (x), velocity (v), and mass (m) via a conserved quantity:
NKTg1 = x * (m * v)
From this, the mass can be interpolated:
m = NKTg1 / (x * v)
Why interesting?
Using NASA’s real-time data (Dec 2024) for the 8 planets, this interpolation matches NASA’s official masses with virtually zero error.
Here’s a quick implementation in Rust.
Rust Implementation
fn main() {
let planets = vec![
("Mercury", 6.9817930e7, 38.86, 3.301e23),
("Venus", 1.08939e8, 35.02, 4.867e24),
("Earth", 1.471e8, 29.29, 5.972e24),
("Mars", 2.4923e8, 24.07, 6.417e23),
("Jupiter", 8.1662e8, 13.06, 1.898e27),
("Saturn", 1.50653e9, 9.69, 5.683e26),
("Uranus", 3.00139e9, 6.8, 8.681e25),
("Neptune", 4.5589e9, 5.43, 1.024e26),
];
for (name, x, v, m_nasa) in planets {
let p = m_nasa * v;
let nktg1 = x * p;
let m_interp = nktg1 / (x * v);
let delta = m_nasa - m_interp;
println!(
"{}:\n NASA mass = {:.3e}\n Interpolated mass= {:.3e}\n Δm = {:.2e}\n",
name, m_nasa, m_interp, delta
);
}
}
Sample Output
Mercury:
NASA mass = 3.301e23
Interpolated mass= 3.301e23
Δm = 0.00e+00
Earth:
NASA mass = 5.972e24
Interpolated mass= 5.972e24
Δm = 0.00e+00
...
Observations
-
All 8 planets match NASA’s published values with negligible error (<0.0001%).
-
Suggests
NKTg1
acts as a conserved quantity in orbital mechanics. -
Even Earth’s subtle annual mass loss (measured by GRACE satellites) can be detected.
Why share this here?
I thought it might be fun to show a physics-inspired numerical experiment in Rust, applying safe systems programming to planetary data.
Curious what you all think:
-
How would you approach this kind of model more idiomatically in Rust?
-
Would you use crates like
ndarray
ornalgebra
instead of plain f64s? -
Anyone interested in extending this into a visualization project?
Nguyen Khanh Tung
Popular Backend topics








Other popular topics









Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /rails
- /js
- /python
- /security
- /go
- /swift
- /vim
- /clojure
- /emacs
- /haskell
- /java
- /onivim
- /typescript
- /svelte
- /kotlin
- /crystal
- /c-plus-plus
- /tailwind
- /gleam
- /react
- /ocaml
- /flutter
- /elm
- /vscode
- /ash
- /html
- /opensuse
- /centos
- /php
- /deepseek
- /zig
- /scala
- /sublime-text
- /textmate
- /lisp
- /nixos
- /debian
- /react-native
- /agda
- /kubuntu
- /arch-linux
- /django
- /revery
- /ubuntu
- /spring
- /manjaro
- /nodejs
- /diversity
- /lua
- /julia
- /c
- /slackware
- /neovim