Fix issues

This commit is contained in:
Pascal Serrarens 2024-01-08 15:08:01 +01:00
parent 0a4f2751fe
commit fe176f6a73
2 changed files with 19 additions and 13 deletions

View File

@ -88,22 +88,24 @@ template <> Angle2<float> Angle2<float>::Normalize(Angle2<float> angle) {
return angleValue; return angleValue;
} }
template <typename T> template <>
Angle2<T> Angle2<T>::Clamp(Angle2<T> angle, Angle2<T> min, Angle2<T> max) { Angle2<float> Angle2<float>::Clamp(Angle2<float> angle, Angle2<float> min,
Angle2<float> max) {
float normalizedAngle = Normalize(angle); float normalizedAngle = Normalize(angle);
float r = Float::Clamp(normalizedAngle, min, max); float r = Float::Clamp(normalizedAngle, min, max);
return r; return r;
} }
template <typename T> // template <typename T>
Angle2<T> Angle2<T>::Difference(Angle2<T> a, Angle2<T> b) { // Angle2<T> Angle2<T>::Difference(Angle2<T> a, Angle2<T> b) {
float r = Normalize(b - a); // Angle2<T> r = Normalize(b - a);
return r; // return r;
} // }
template <typename T> template <>
Angle2<T> Angle2<T>::MoveTowards(Angle2<T> fromAngle, Angle2<T> toAngle, Angle2<float> Angle2<float>::MoveTowards(Angle2<float> fromAngle,
Angle2<T> maxAngle) { Angle2<float> toAngle,
Angle2<float> maxAngle) {
float d = toAngle - fromAngle; float d = toAngle - fromAngle;
float sign = signbit(d) ? -1 : 1; float sign = signbit(d) ? -1 : 1;
d = sign * Float::Clamp(fabs(d), 0, maxAngle); d = sign * Float::Clamp(fabs(d), 0, maxAngle);
@ -140,8 +142,9 @@ Angle2<float> Angle2<float>::CosineRuleAngle(float a, float b, float c) {
return gamma; return gamma;
} }
template <typename T> template <>
Angle2<T> Angle2<T>::SineRuleAngle(float a, Angle2<T> beta, float b) { Angle2<float> Angle2<float>::SineRuleAngle(float a, Angle2<float> beta,
float b) {
float alpha = asin(a * sin(beta * Angle::Deg2Rad) / b); float alpha = asin(a * sin(beta * Angle::Deg2Rad) / b);
return alpha; return alpha;
} }

View File

@ -16,7 +16,10 @@ public:
static Angle2<T> Normalize(Angle2<T> angle); static Angle2<T> Normalize(Angle2<T> angle);
static Angle2<T> Clamp(Angle2<T> angle, Angle2<T> min, Angle2<T> max); static Angle2<T> Clamp(Angle2<T> angle, Angle2<T> min, Angle2<T> max);
static Angle2<T> Difference(Angle2<T> a, Angle2<T> b); static Angle2<T> Difference(Angle2<T> a, Angle2<T> b) {
Angle2<T> r = Normalize(b - a);
return r;
};
static Angle2<T> MoveTowards(Angle2<T> fromAngle, Angle2<T> toAngle, static Angle2<T> MoveTowards(Angle2<T> fromAngle, Angle2<T> toAngle,
Angle2<T> maxAngle); Angle2<T> maxAngle);