diff --git a/Angle.cpp b/Angle.cpp index d9b805b..166a88e 100644 --- a/Angle.cpp +++ b/Angle.cpp @@ -78,10 +78,16 @@ AngleOf::AngleOf(int angle) : value((float)angle) {} template <> AngleOf::AngleOf(float angle) : value(angle) {} -// template <> -// AngleOf::operator float() const { -// return value; -// } +template +AngleOf AngleOf::Degrees(float a) { + AngleOf angle = AngleOf(a); + return angle; +} +template +AngleOf AngleOf::Radians(float a) { + AngleOf angle = AngleOf((a / pi) * 180); + return angle; +} template <> float AngleOf::ToFloat() const { @@ -194,8 +200,16 @@ AngleOf AngleOf::MoveTowards(AngleOf fromAngle, } template -float AngleOf::ACos(AngleOf a) { - return acosf(a.InRadians()); +float AngleOf::Cos(AngleOf a) { + return cosf(a.InRadians()); +} +template +float AngleOf::Sin(AngleOf a) { + return sinf(a.InRadians()); +} +template +float AngleOf::Tan(AngleOf a) { + return tanf(a.InRadians()); } template <> diff --git a/Angle.h b/Angle.h index 842b3e1..b65633b 100644 --- a/Angle.h +++ b/Angle.h @@ -19,7 +19,9 @@ class AngleOf { AngleOf() {}; AngleOf(int f); AngleOf(float f); - // operator float() const; + + static AngleOf Degrees(float f); + static AngleOf Radians(float f); float ToFloat() const; float InDegrees() const; @@ -27,7 +29,7 @@ class AngleOf { inline T GetBinary() const { return this->value; } - static AngleOf pi; + // static AngleOf pi; bool operator==(AngleOf a); bool operator>(AngleOf a); @@ -57,7 +59,9 @@ class AngleOf { AngleOf toAngle, AngleOf maxAngle); - static float ACos(AngleOf); + static float Cos(AngleOf); + static float Sin(AngleOf); + static float Tan(AngleOf); static AngleOf CosineRuleSide(float a, float b, AngleOf gamma); static AngleOf CosineRuleAngle(float a, float b, float c);