GY-63_MS5611/libraries/relativity
2022-11-23 14:54:09 +01:00
..
.github add funding.yml 2022-08-03 21:56:07 +02:00
examples 0.1.2 relativity 2021-12-27 20:50:10 +01:00
test 0.1.2 relativity 2021-12-27 20:50:10 +01:00
.arduino-ci.yml 0.1.4 relativity 2022-11-23 14:54:09 +01:00
CHANGELOG.md 0.1.4 relativity 2022-11-23 14:54:09 +01:00
library.json 0.1.4 relativity 2022-11-23 14:54:09 +01:00
library.properties 0.1.4 relativity 2022-11-23 14:54:09 +01:00
LICENSE 0.1.2 relativity 2021-12-27 20:50:10 +01:00
README.md 0.1.4 relativity 2022-11-23 14:54:09 +01:00
relativity.h 0.1.4 relativity 2022-11-23 14:54:09 +01:00

Arduino CI Arduino-lint JSON check License: MIT GitHub release

relativity

Arduino library with relativity functions.

Description

This experimental library implements a number of functions that give an indication of the time dilation etcetera due to relativistic speed.

Goal: Educational purposes or when one puts a cube-sat into space :)

Interface

  • relativity() constructor.
  • double getC() returns speed of light.
  • double getG() returns gravitational constant.
  • double factor(double speed) returns sqrt(1-v2/c2).
  • double gamma(double speed) returns 1/sqrt(1-v2/c2).
  • double relativeTime(double time, double speed) returns the relative time for given time and speed.
  • double relativeLength(double length, double speed) returns the relative length for given length and speed.
  • double relativeMass(double mass, double speed) returns the relative mass for given mass and speed.
  • double EnergyMass(double mass, double speed) returns the energyMass for given mass and speed. Think E = mc^2.

Caching variants

These functions are the same however the math to calculate a given factor and gamma is done only once and cached. So these functions will perform a bit better, especially if floating point is slow.

  • void setSpeed(double speed = 0) set the speed and calculate the factor and gamma to minimize math for next functions.
  • double getSpeed() returns speed set.
  • double getFactor() returns factor for speed set.
  • double getGamma() returns gamma for speed set.
  • double relativeTime(double time) returns the relative time for speed set with setSpeed().
  • double relativeLength(double length) returns the relative length for speed set.
  • double relativeMass(double mass) returns the relative mass for speed set.
  • double EnergyMass(double mass) returns the energy mass for for speed set.

Gravity effects

  • double gravitationalTime(double time, double speed) returns time dilation due to gravitational effects.
  • double diameterEarth(double longitude = 45) calculates the diameter of the Earth given it is not a nice circle but more an ellipse, flatter on the poles and thicker on the equator. Longitude is in degrees -90 .. 90.
  • double getPlanetMass(uint8_t n) returns planet mass in kg where parameter n: 0 = Sun, 1 = Mercury etc.
  • double getPlanetRadius(uint8_t n) returns planet radius in km where parameter n: 0 = Sun, 1 = Mercury etc.

Operations

See examples for typical usage.

Future

  • test test test test
  • Split .h into .h and .cpp
  • add more functions
    • Schwarzschild horizon etc
  • fix some overflow conditions.
  • add moons?
    • need a database :)
  • add caching version of mass / radius;
  • move code to .cpp