Added Degrees inline function

This commit is contained in:
Pascal Serrarens 2024-08-02 11:27:39 +02:00
parent a4b0491c2f
commit 86b7c21dca
4 changed files with 13 additions and 16 deletions

View File

@ -16,6 +16,9 @@ class AngleOf {
// AngleOf(T v) : value(v) {}
// operator T() const; // { return value; }
operator float() const;
static AngleOf<T> Degrees(float f);
inline T GetBinary() const { return this->value; }
static AngleOf<T> Rad2Deg;

View File

@ -13,7 +13,7 @@ AngleOf<signed short>::AngleOf(float angle) {
}
// map float [-180..180) to integer [-32768..32767]
this->value = (signed short)((angle / 360.0F) * 65536.0F);
this->value = (signed short)(angle / 360.0F * 65536.0F);
}
template <>
@ -22,21 +22,6 @@ AngleOf<signed short>::operator float() const {
return f;
}
// This should not exist...
// template <>
// AngleOf<signed short> AngleOf<signed short>::pi = 3.1415927410125732421875F;
// template <>
// AngleOf<signed short> AngleOf<signed short>::Rad2Deg = 360.0f / (pi * 2);
// template <>
// AngleOf<signed short> AngleOf<signed short>::Deg2Rad = (pi * 2) / 360.0f;
// template <>
// AngleOf<signed short> AngleOf<signed short>::Normalize(
// AngleOf<signed short> angle) {
// return angle;
// }
// Not correct!!! just for syntactical compilation ATM
template <>
AngleOf<signed short> AngleOf<signed short>::CosineRuleSide(

View File

@ -8,6 +8,10 @@ namespace LinearAlgebra {
typedef AngleOf<signed short> Angle16;
template <>
inline static Angle16 Angle16::Degrees(float angle) {
return (angle / 360.0F * 65536.0F);
}
// template <> Angle16::AngleOf(float angle) {
// if (!isfinite(angle)) {
// value = 0;

View File

@ -8,6 +8,11 @@ namespace LinearAlgebra {
typedef AngleOf<signed char> Angle8;
template <>
inline static Angle8 Angle8::Degrees(float angle) {
return (angle / 360.0F * 256.0F);
}
// template <> Angle8::AngleOf(float angle) {
// if (!isfinite(angle)) {
// value = 0;