2021-01-29 06:31:58 -05:00
|
|
|
|
|
|
|
[![Arduino CI](https://github.com/RobTillaart/Angle/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
|
2021-10-17 16:24:38 -04:00
|
|
|
[![Arduino-lint](https://github.com/RobTillaart/Angle/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/Angle/actions/workflows/arduino-lint.yml)
|
|
|
|
[![JSON check](https://github.com/RobTillaart/Angle/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/Angle/actions/workflows/jsoncheck.yml)
|
2021-01-29 06:31:58 -05:00
|
|
|
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/Angle/blob/master/LICENSE)
|
|
|
|
[![GitHub release](https://img.shields.io/github/release/RobTillaart/Angle.svg?maxAge=3600)](https://github.com/RobTillaart/Angle/releases)
|
|
|
|
|
|
|
|
|
2020-11-27 05:10:47 -05:00
|
|
|
# Angle
|
|
|
|
|
2021-10-17 16:24:38 -04:00
|
|
|
Arduino library for basic math for Angles in degrees, minute, seconds and ten-thousands.
|
2021-01-29 06:31:58 -05:00
|
|
|
|
2020-11-27 05:10:47 -05:00
|
|
|
|
|
|
|
## Description
|
|
|
|
|
2021-10-17 16:24:38 -04:00
|
|
|
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
|
2020-11-27 05:10:47 -05:00
|
|
|
able to print an angle with minutes and seconds instead of as a floating point
|
|
|
|
or radians.
|
|
|
|
|
2021-10-17 16:24:38 -04:00
|
|
|
To make the library more useful basic maths ( + - \* / )
|
2021-01-29 06:31:58 -05:00
|
|
|
and comparisons ( == != < <= > >= ) are added to the class.
|
|
|
|
|
|
|
|
The library implements the Printable interface, allowing one to call
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
**Serial.println(angle)** or **SD.print(angle)**.
|
2021-01-29 06:31:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
## Interface
|
|
|
|
|
|
|
|
### Constructors
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
- **Angle(int dd = 0, int mm = 0, int ss = 0, int tt = 0)** create an Angle, default is zero.
|
2021-01-29 06:31:58 -05:00
|
|
|
- **Angle(double alpha)** create an Angle from a double.
|
2021-10-17 16:24:38 -04:00
|
|
|
- **Angle(char \* str)** create an Angle from a string e.g. "45.31234".
|
2021-01-29 06:31:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
### base
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
- **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.
|
2021-01-29 06:31:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
### Conversions
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
- **double toDouble()** returns the angle as a double (0..360.0, float on UNO).
|
|
|
|
- **double toRadians()** returns the angle in radians (0..TWO_PI).
|
2021-10-17 16:24:38 -04:00
|
|
|
- **void fromRadian(double rad)** create an angle from radians.
|
2021-01-29 06:31:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
### Equality operators
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
The library supports equality operator "==", "!=", "<" "<=" ">" and ">=" .
|
2021-01-29 06:31:58 -05:00
|
|
|
|
|
|
|
|
|
|
|
### Math operators
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
- **negate** returns -angle.
|
|
|
|
- **addition** and **subtract** add angles to angles.
|
|
|
|
- **multiplication** and **division** multiply an angle with a double.
|
|
|
|
- **ratio** ratio = Angle/Angle.
|
2021-01-29 06:31:58 -05:00
|
|
|
|
2020-11-27 05:10:47 -05:00
|
|
|
|
|
|
|
## Operation
|
|
|
|
|
2021-12-13 07:48:16 -05:00
|
|
|
See examples.
|
2020-11-27 05:10:47 -05:00
|
|
|
|
|
|
|
|
|
|
|
## Note
|
2021-01-29 06:31:58 -05:00
|
|
|
|
2020-11-27 05:10:47 -05:00
|
|
|
The library has not been tested extensively and it could still contain
|
|
|
|
bugs. Especially the constructor does not check input so use it carefully.
|
2021-12-13 07:48:16 -05:00
|
|
|
|
|
|
|
|
|
|
|
## Future
|
|
|
|
|
|
|
|
- improve documentation
|
|
|
|
- test more
|
|
|
|
- optimize code where possible
|
|
|
|
|
|
|
|
|