mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
0.1.2 relativity
This commit is contained in:
parent
040a73748d
commit
871eb7d0a9
@ -2,6 +2,10 @@ compile:
|
|||||||
# Choosing to run compilation tests on 2 different Arduino platforms
|
# Choosing to run compilation tests on 2 different Arduino platforms
|
||||||
platforms:
|
platforms:
|
||||||
- uno
|
- uno
|
||||||
- leonardo
|
|
||||||
- due
|
- due
|
||||||
- zero
|
- zero
|
||||||
|
- leonardo
|
||||||
|
- m4
|
||||||
|
- esp32
|
||||||
|
- esp8266
|
||||||
|
- mega2560
|
||||||
|
@ -4,10 +4,14 @@ name: Arduino CI
|
|||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
arduino_ci:
|
runTest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: Arduino-CI/action@master
|
- uses: ruby/setup-ruby@v1
|
||||||
# Arduino-CI/action@v0.1.1
|
with:
|
||||||
|
ruby-version: 2.6
|
||||||
|
- run: |
|
||||||
|
gem install arduino_ci
|
||||||
|
arduino_ci.rb
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2021-2021 Rob Tillaart
|
Copyright (c) 2021-2022 Rob Tillaart
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
|
||||||
[![Arduino CI](https://github.com/RobTillaart/relativity/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
|
[![Arduino CI](https://github.com/RobTillaart/relativity/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
|
||||||
|
[![Arduino-lint](https://github.com/RobTillaart/relativity/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/relativity/actions/workflows/arduino-lint.yml)
|
||||||
|
[![JSON check](https://github.com/RobTillaart/relativity/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/relativity/actions/workflows/jsoncheck.yml)
|
||||||
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/relativity/blob/master/LICENSE)
|
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/relativity/blob/master/LICENSE)
|
||||||
[![GitHub release](https://img.shields.io/github/release/RobTillaart/relativity.svg?maxAge=3600)](https://github.com/RobTillaart/relativity/releases)
|
[![GitHub release](https://img.shields.io/github/release/RobTillaart/relativity.svg?maxAge=3600)](https://github.com/RobTillaart/relativity/releases)
|
||||||
|
|
||||||
@ -11,18 +13,19 @@ Arduino library with relativity functions.
|
|||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
This experimental library implements a number of functions that give indication of the time dilation etc due to relativistic speed.
|
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 cubesat into space :)
|
Goal: Educational purposes or when one puts a cube-sat into space :)
|
||||||
|
|
||||||
|
|
||||||
## Interface
|
## Interface
|
||||||
|
|
||||||
- **relativity()** constructor
|
- **relativity()** constructor.
|
||||||
- **double getC()** returns speed of light
|
- **double getC()** returns speed of light.
|
||||||
- **double getG()** returns gravitational constant
|
- **double getG()** returns gravitational constant.
|
||||||
- **double factor(double speed)** returns sqrt(1-v2/c2)
|
- **double factor(double speed)** returns sqrt(1-v2/c2).
|
||||||
- **double gamma(double speed)** returns 1/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 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 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 relativeMass(double mass, double speed)** returns the relative mass for given mass and speed.
|
||||||
@ -31,11 +34,12 @@ Goal: Educational purposes or when one puts a cubesat into space :)
|
|||||||
|
|
||||||
### Caching variants
|
### 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.
|
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 once and calculate the factor and gamma to minimize math for next functions. Think caching.
|
- **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 getSpeed()** returns speed set.
|
||||||
- **double getFactor()** returns factor for speed set
|
- **double getFactor()** returns factor for speed set.
|
||||||
- **double getGamma()** returns gamma for speed set.
|
- **double getGamma()** returns gamma for speed set.
|
||||||
- **double relativeTime(double time)** returns the relative time for speed set with **setSpeed()**.
|
- **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 relativeLength(double length)** returns the relative length for speed set.
|
||||||
@ -46,12 +50,13 @@ These functions are the same however the math to calculate a given factor and ga
|
|||||||
### Gravity effects
|
### Gravity effects
|
||||||
|
|
||||||
- **double gravitationalTime(double time, double speed)** returns time dilation due to gravitational 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.
|
- **double diameterEarth(double longitude = 45)** calculates the diameter of the Earth given it is not a nice
|
||||||
Longitude is in (absolute) degrees.
|
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**
|
- **double getPlanetMass(uint8_t n)** returns planet mass in **kg**
|
||||||
where param n: 0 = Sun, 1 = Mercury etc
|
where parameter n: 0 = Sun, 1 = Mercury etc.
|
||||||
- **double getPlanetRadius(uint8_t n)** returns planet radius in **km**
|
- **double getPlanetRadius(uint8_t n)** returns planet radius in **km**
|
||||||
where param n: 0 = Sun, 1 = Mercury etc
|
where parameter n: 0 = Sun, 1 = Mercury etc.
|
||||||
|
|
||||||
|
|
||||||
## Operations
|
## Operations
|
||||||
@ -64,6 +69,5 @@ See examples for typical usage.
|
|||||||
- test test test test
|
- test test test test
|
||||||
- add more functions
|
- add more functions
|
||||||
- fix some overflow conditions.
|
- fix some overflow conditions.
|
||||||
|
|
||||||
- add moons?
|
- add moons?
|
||||||
- add caching version of mass / radius;
|
- add caching version of mass / radius;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
//
|
//
|
||||||
// FILE: gamma_table.ino
|
// FILE: gamma_table.ino
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.1.0
|
|
||||||
// PURPOSE: test formulas
|
// PURPOSE: test formulas
|
||||||
// DATE: 2021-05-29
|
// DATE: 2021-05-29
|
||||||
// URL: https://github.com/RobTillaart/relativity
|
// URL: https://github.com/RobTillaart/relativity
|
||||||
@ -14,6 +13,7 @@ uint32_t start, stop;
|
|||||||
|
|
||||||
relativity R;
|
relativity R;
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
@ -46,4 +46,6 @@ void loop()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
//
|
//
|
||||||
// FILE: gravity_demo.ino
|
// FILE: gravity_demo.ino
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.1.0
|
|
||||||
// PURPOSE: test formulas
|
// PURPOSE: test formulas
|
||||||
// DATE: 2021-05-29
|
// DATE: 2021-05-29
|
||||||
// URL: https://github.com/RobTillaart/relativity
|
// URL: https://github.com/RobTillaart/relativity
|
||||||
@ -35,4 +34,6 @@ void loop()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
//
|
//
|
||||||
// FILE: relativity_demo.ino
|
// FILE: relativity_demo.ino
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.1.0
|
|
||||||
// PURPOSE: test formulas
|
// PURPOSE: test formulas
|
||||||
// DATE: 2021-05-29
|
// DATE: 2021-05-29
|
||||||
// URL: https://github.com/RobTillaart/relativity
|
// URL: https://github.com/RobTillaart/relativity
|
||||||
@ -48,4 +47,6 @@ void loop()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -15,8 +15,9 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/RobTillaart/relativity.git"
|
"url": "https://github.com/RobTillaart/relativity.git"
|
||||||
},
|
},
|
||||||
"version": "0.1.1",
|
"version": "0.1.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"frameworks": "*",
|
"frameworks": "*",
|
||||||
"platforms": "*"
|
"platforms": "*",
|
||||||
|
"headers": "relativity.h"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=relativity
|
name=relativity
|
||||||
version=0.1.1
|
version=0.1.2
|
||||||
author=Rob Tillaart <rob.tillaart@gmail.com>
|
author=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
sentence=library with relativity functions.
|
sentence=library with relativity functions.
|
||||||
|
@ -2,19 +2,20 @@
|
|||||||
//
|
//
|
||||||
// FILE: relativity.h
|
// FILE: relativity.h
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.1.1
|
// VERSION: 0.1.2
|
||||||
// PURPOSE: Collection relativity formulas
|
// PURPOSE: Collection relativity formulas
|
||||||
// URL: https://github.com/RobTillaart/relativity
|
// URL: https://github.com/RobTillaart/relativity
|
||||||
//
|
//
|
||||||
// HISTORY:
|
// HISTORY:
|
||||||
// 0.1.0 2021-05-29 initial version
|
// 0.1.0 2021-05-29 initial version
|
||||||
// 0.1.1 2021-06-02 fix in tests
|
// 0.1.1 2021-06-02 fix in tests
|
||||||
|
// 0.1.2 2021-12-27 update library.json, readme, license, minor edits
|
||||||
|
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
|
||||||
#define RELATIVITY_LIB_VERSION (F("0.1.1"))
|
#define RELATIVITY_LIB_VERSION (F("0.1.2"))
|
||||||
|
|
||||||
|
|
||||||
class relativity
|
class relativity
|
||||||
@ -122,7 +123,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// returns radius in km.
|
// returns radius in km.
|
||||||
double radiusEarth(uint8_t longitude = 45) // 0..90
|
double radiusEarth(double longitude = 45) // 0..90
|
||||||
{
|
{
|
||||||
// https://www.youtube.com/watch?v=hYMvJum9_Do @ 8:00
|
// https://www.youtube.com/watch?v=hYMvJum9_Do @ 8:00
|
||||||
// radius polar: 6357 km
|
// radius polar: 6357 km
|
||||||
@ -130,7 +131,7 @@ public:
|
|||||||
// difference: 21 km
|
// difference: 21 km
|
||||||
double radians = longitude * (PI / 180.0);
|
double radians = longitude * (PI / 180.0);
|
||||||
|
|
||||||
// approx of the graph in youtube with a cosine
|
// approx of the graph in YouTube with a cosine
|
||||||
return 6367.5 + 10.5 * cos(radians * 2);
|
return 6367.5 + 10.5 * cos(radians * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,3 +195,4 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
unittest_setup()
|
unittest_setup()
|
||||||
{
|
{
|
||||||
|
fprintf(stderr, "RELATIVITY_LIB_VERSION: %s\n", (char*) RELATIVITY_LIB_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -47,8 +48,6 @@ unittest_teardown()
|
|||||||
|
|
||||||
unittest(test_constructor)
|
unittest(test_constructor)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "VERSION: %s\n", RELATIVITY_LIB_VERSION);
|
|
||||||
|
|
||||||
relativity R;
|
relativity R;
|
||||||
|
|
||||||
// test constants
|
// test constants
|
||||||
|
Loading…
Reference in New Issue
Block a user