GY-63_MS5611/libraries/Angle/README.md
2023-01-31 15:29:30 +01:00

3.2 KiB

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

Angle

Arduino library for basic math for Angles in degrees, minute, seconds and ten-thousands.

Description

Angle is an Arduino class to print, compare and do basic maths with angles in degrees, minutes seconds and ten-thousands. The class was created to be able to print an angle with minutes and seconds instead of as a floating point or radians.

To make the library more useful basic maths ( + - * / ) and comparisons ( == != < <= > >= ) are added to the class.

The library implements the Printable interface, allowing one to call

Serial.println(angle) or SD.print(angle).

Degree sign ° = ALT-0176 (Windows)

Interface

#include "Angle.h"

Constructors

  • Angle(int dd = 0, int mm = 0, int ss = 0, int tt = 0) create an Angle, default is zero.
  • Angle(double alpha) create an Angle from a double.
  • Angle(char * str) create an Angle from a string e.g. "45.31234".

Base

  • int sign() returns -1 or 1.
  • int degree() returns # degrees.
  • int minute() returns # minutes.
  • int second() returns # seconds.
  • int tenthousand() returns # ten-thousands of a second.

Conversions

  • double toDouble() returns the angle as a double (0..360.0, float on UNO).
  • double toRadians() returns the angle in radians (0..TWO_PI).
  • void fromRadian(double rad) create an angle from radians.

More conversions - https://github.com/RobTillaart/AngleConvertor

Equality operators

The library supports equality operator "==", "!=", "<" "<=" ">" and ">=" .

Math operators

  • negate returns -angle.
  • addition and subtract add angles to angles.
  • multiplication and division multiply an angle with a double.
  • ratio ratio = Angle/Angle.

Operation

See examples.

Note

The library has not been tested extensively and it could still contain bugs. Especially the constructor does not check input so use it carefully.

Future

Must

  • improve documentation

Should

  • Test normalize code
    • unit tests, sketch?
  • test more
    • TOCHECK in code
  • improve code quality
    • use better variable names in code

Could

  • optimize code where possible
    • low priority
  • move all code to .cpp
  • change output format to confirm standard 4°12'14.1234"

Wont