Skip to content

Commit

Permalink
add percent + milliRadians
Browse files Browse the repository at this point in the history
  • Loading branch information
RobTillaart committed Jan 25, 2024
1 parent 393afc5 commit cedd46c
Show file tree
Hide file tree
Showing 8 changed files with 117 additions and 30 deletions.
8 changes: 6 additions & 2 deletions AngleConvertor.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// FILE: AngleConvertor.h
// AUTHOR: Rob Tillaart
// VERSION: 0.2.0
// VERSION: 0.2.1
// DATE: 2022-12-01
// PURPOSE: Angle conversion class
// URL: https://github.com/RobTillaart/AngleConvertor
Expand All @@ -11,7 +11,7 @@
#include "Arduino.h"


#define ANGLECONVERTOR_LIB_VERSION (F("0.2.0"))
#define ANGLECONVERTOR_LIB_VERSION (F("0.2.1"))


/////////////////////////////////////////////////////////////
Expand All @@ -33,11 +33,13 @@ class AngleConvertor
void setDiameterPart(double value = 0) { _v = value * (180.0 / 60.0); };
void setHexacontade(double value = 0) { _v = value * (180.0 / 30.0); };
void setHourAngle(double value = 0) { _v = value * (180.0 / 12.0); };
void setMilliRadians(double value = 0) { _v = value * (180.0 / (M_PI * 1000.0)); };
void setMilliTurn(double value = 0) { _v = value * (180.0 / 500.0); };

void setMinuteTime(double value = 0) { _v = value * (180.0 / 720.0); };
void setOctant(double value = 0) { _v = value * (180.0 / 4.0); };
void setPechus(double value = 0) { _v = value * (180.0 / 90.0); }; // assumes 2°
void setPercent(double value = 0) { _v = value * (180.0 / 50.0); }; // equals centiTurn..
void setPoints(double value = 0) { _v = value * (180.0 / 16.0); };
void setQuadrant(double value = 0) { _v = value * (180.0 / 2.0); };
void setQuarterPoint(double value = 0) { _v = value * (180.0 / 64.0); };
Expand All @@ -57,11 +59,13 @@ class AngleConvertor
double getDiameterPart() { return _v * (60.0 / 180.0); };
double getHexacontade() { return _v * (30.0 / 180.0); };
double getHourAngle() { return _v * (12.0 / 180.0); };
double getMilliRadians() { return _v * (M_PI * 1000.0 / 180.0); };
double getMilliTurn() { return _v * (500.0 / 180.0); };

double getMinuteTime() { return _v * (720.0 / 180.0); };
double getOctant() { return _v * (4.0 / 180.0); };
double getPechus() { return _v * (90.0 / 180.0); }; // assumes 2°
double getPercent() { return _v * (50.0 / 180.0); }
double getPoints() { return _v * (16.0 / 180.0); };
double getQuadrant() { return _v * (2.0 / 180.0); };
double getQuarterPoint() { return _v * (64.0 / 180.0); };
Expand Down
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
# Change Log Angle
# Change Log AngleConvertor

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).


## [0.2.1] - 2024-01-24
- add percent as unit
- add milliRadians as unit
- add unit tests for windrose()


## [0.2.0] - 2024-01-15
- Fix #4, use **degrees** as internal format to improve precision (a bit)
Expand Down
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ can gain extra precision.
#### Formats


| name | full circle |
|:----------------|--------------:|
| name | full circle | notes |
|:----------------|--------------:|:--------|
| Degrees | 360 |
| Radians | 2 PI |
| Gradians | 400 |
Expand All @@ -42,6 +42,7 @@ can gain extra precision.
| MinuteTime | 1440 |
| Octant | 8 |
| Pechus | 180 |
| Percent | 100 | equals CentiTurn.
| Points | 32 |
| Quadrant | 4 |
| QuarterPoint | 128 |
Expand Down Expand Up @@ -82,10 +83,12 @@ can gain extra precision.
- **void setDiameterPart(double value = 0)**
- **void setHexacontade(double value = 0)**
- **void setHourAngle(double value = 0)**
- **void setMilliRadians(double value = 0)**
- **void setMilliTurn(double value = 0)**
- **void setMinuteTime(double value = 0)**
- **void setOctant(double value = 0)**
- **void setPechus(double value = 0)**
- **void setPercent(double value = 0)**
- **void setPoints(double value = 0)**
- **void setQuadrant(double value = 0)**
- **void setQuarterPoint(double value = 0)**
Expand All @@ -106,10 +109,12 @@ can gain extra precision.
- **double getDiameterPart()**
- **double getHexacontade()**
- **double getHourAngle()**
- **double getMilliRadians()**
- **double getMilliTurn()**
- **double getMinuteTime()**
- **double getOctant()**
- **double getPechus()**
- **double getPercent()**
- **double getPoints()**
- **double getQuadrant()**
- **double getQuarterPoint()**
Expand Down
45 changes: 42 additions & 3 deletions examples/AngleConverter_demo/AngleConverter_demo.ino
Original file line number Diff line number Diff line change
Expand Up @@ -16,149 +16,188 @@ AngleConvertor conv;
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println(__FILE__);
Serial.print("lib version: ");
Serial.print("ANGLECONVERTOR_LIB_VERSION: ");
Serial.println(ANGLECONVERTOR_LIB_VERSION);
Serial.println();

// if double = 8 bytes adjust #decimals
uint8_t decimals = 7;
if (sizeof(double) == 8) decimals = 15;
uint8_t decimals = 6;
if (sizeof(double) == 8) decimals = 12;

// Serial.println("UNIT \tDEGREES \tRADIANS \tUNIT");

conv.setDegrees(1.0);
Serial.print("Degrees \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getDegrees(), decimals);

conv.setRadians(1.0);
Serial.print("Radians \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getRadians(), decimals);

conv.setGradians(1.0);
Serial.print("Gradians\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getGradians(), decimals);

conv.setAngularMil(1.0);
Serial.print("AngularMil\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getAngularMil(), decimals);

conv.setBinaryRadians(1.0);
Serial.print("BinaryRadians\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getBinaryRadians(), decimals);

conv.setCentiTurn(1.0);
Serial.print("CentiTurn\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getCentiTurn(), decimals);

conv.setDiameterPart(1.0);
Serial.print("DiameterPart\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getDiameterPart(), decimals);

conv.setHexacontade(1.0);
Serial.print("Hexacontade\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getHexacontade(), decimals);

conv.setHourAngle(1.0);
Serial.print("HourAngle\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getHourAngle(), decimals);

conv.setMilliRadians(1.0);
Serial.print("MilliRadians\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getMilliRadians(), decimals);

conv.setMilliTurn(1.0);
Serial.print("MilliTurn\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getMilliTurn(), decimals);

conv.setMinuteTime(1.0);
Serial.print("MinuteTime\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getMinuteTime(), decimals);

conv.setOctant(1.0);
Serial.print("Octant \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getOctant(), decimals);

conv.setPechus(1.0);
Serial.print("Pechus \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getPechus(), decimals);

conv.setPercent(1.0);
Serial.print("Percent \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getPercent(), decimals);

conv.setPoints(1.0);
Serial.print("Points \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getPoints(), decimals);

conv.setQuadrant(1.0);
Serial.print("Quadrant\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getQuadrant(), decimals);

conv.setQuarterPoint(1.0);
Serial.print("QuarterPoint\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getQuarterPoint(), decimals);

conv.setSecondsTime(1.0);
Serial.print("SecondsTime\t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getSecondsTime(), decimals);

conv.setSextant(1.0);
Serial.print("Sextant \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getSextant(), decimals);

conv.setSign(1.0);
Serial.print("Sign \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Serial.print("\t");
Serial.println(conv.getSign(), decimals);

conv.setTurn(1.0);
Serial.print("Turn \t");
Serial.print(conv.getDegrees(), decimals);
Serial.print("\t");
Serial.print(conv.getRadians(), decimals);
Expand Down
4 changes: 4 additions & 0 deletions keywords.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ setCentiTurn KEYWORD2
setDiameterPart KEYWORD2
setHexacontade KEYWORD2
setHourAngle KEYWORD2
setMilliRadians KEYWORD2
setMilliTurn KEYWORD2
setMinuteTime KEYWORD2
setOctant KEYWORD2
setPechus KEYWORD2
setPercent KEYWORD2
setPoints KEYWORD2
setQuadrant KEYWORD2
setQuarterPoint KEYWORD2
Expand All @@ -41,10 +43,12 @@ getCentiTurn KEYWORD2
getDiameterPart KEYWORD2
getHexacontade KEYWORD2
getHourAngle KEYWORD2
getMilliRadians KEYWORD2
getMilliTurn KEYWORD2
getMinuteTime KEYWORD2
getOctant KEYWORD2
getPechus KEYWORD2
getPercent KEYWORD2
getPoints KEYWORD2
getQuadrant KEYWORD2
getQuarterPoint KEYWORD2
Expand Down
2 changes: 1 addition & 1 deletion library.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"type": "git",
"url": "https://github.com/RobTillaart/AngleConvertor.git"
},
"version": "0.2.0",
"version": "0.2.1",
"license": "MIT",
"frameworks": "*",
"platforms": "*",
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=AngleConvertor
version=0.2.0
version=0.2.1
author=Rob Tillaart <rob.tillaart@gmail.com>
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
sentence=Library to convert between different less known angle formats.
Expand Down
Loading

0 comments on commit cedd46c

Please # to comment.