Added AVR support

This commit is contained in:
Pascal Serrarens 2023-12-04 10:53:32 +01:00
parent 493a3f7489
commit 006ea046e4

View File

@ -3,10 +3,15 @@
// file, You can obtain one at https ://mozilla.org/MPL/2.0/. // file, You can obtain one at https ://mozilla.org/MPL/2.0/.
#include "Vector2.h" #include "Vector2.h"
#include <math.h>
#include "Angle.h" #include "Angle.h"
#include "FloatSingle.h" #include "FloatSingle.h"
#if defined(AVR)
#include <Arduino.h>
#else
#include <math.h>
#endif
Vector2::Vector2() { Vector2::Vector2() {
x = 0; x = 0;
y = 0; y = 0;
@ -111,7 +116,11 @@ float Vector2::SignedAngle(Vector2 from, Vector2 to) {
if (sqrMagFrom == 0 || sqrMagTo == 0) if (sqrMagFrom == 0 || sqrMagTo == 0)
return 0; return 0;
if (!isfinite(sqrMagFrom) || !isfinite(sqrMagTo)) if (!isfinite(sqrMagFrom) || !isfinite(sqrMagTo))
#if defined(AVR)
return NAN;
#else
return nanf(""); return nanf("");
#endif
float angleFrom = atan2(from.y, from.x); float angleFrom = atan2(from.y, from.x);
float angleTo = atan2(to.y, to.x); float angleTo = atan2(to.y, to.x);
@ -119,13 +128,18 @@ float Vector2::SignedAngle(Vector2 from, Vector2 to) {
} }
Vector2 Vector2::Rotate(Vector2 v, float angle) { Vector2 Vector2::Rotate(Vector2 v, float angle) {
float sin = (float)sinf(angle * Angle::Deg2Rad); #if defined(AVR)
float cos = (float)cosf(angle * Angle::Deg2Rad); float sinValue = sin(angle * Angle::Deg2Rad);
float cosValue = cos(angle * Angle::Deg2Rad);
#else
float sinValue = (float)sinf(angle * Angle::Deg2Rad);
float cosValue = (float)cosf(angle * Angle::Deg2Rad);
#endif
float tx = v.x; float tx = v.x;
float ty = v.y; float ty = v.y;
v.x = (cos * tx) - (sin * ty); v.x = (cosValue * tx) - (sinValue * ty);
v.y = (sin * tx) + (cos * ty); v.y = (sinValue * tx) + (cosValue * ty);
return v; return v;
} }