GY-63_MS5611/libraries/relativity/README.md
2021-06-07 08:51:29 +02:00

3.0 KiB

Arduino CI License: MIT GitHub release

relativity

Arduino library with relativity functions.

Description

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

Goal: Educational purposes or when one puts a cubesat 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 function will perform a bit better, especially if floating point is slow.

  • void setSpeed(double speed = 0) set the speed once and calculate the factor and gamma to minimize math for next functions. Think caching.
  • 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(uint8_t 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 (absolute) degrees.
  • double getPlanetMass(uint8_t n) returns planet mass in kg where param n: 0 = Sun, 1 = Mercury etc
  • double getPlanetRadius(uint8_t n) returns planet radius in km where param n: 0 = Sun, 1 = Mercury etc

Operations

See examples for typical usage.

Future

  • test test test test

  • add more functions

  • fix some overflow conditions.

  • add moons?

  • add caching version of mass / radius;