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;
}
template <typename T>
Angle2<T> Angle2<T>::Clamp(Angle2<T> angle, Angle2<T> min, Angle2<T> max) {
template <>
Angle2<float> Angle2<float>::Clamp(Angle2<float> angle, Angle2<float> min,
Angle2<float> max) {
float normalizedAngle = Normalize(angle);
float r = Float::Clamp(normalizedAngle, min, max);
return r;
}
template <typename T>
Angle2<T> Angle2<T>::Difference(Angle2<T> a, Angle2<T> b) {
float r = Normalize(b - a);
return r;
}
// template <typename T>
// Angle2<T> Angle2<T>::Difference(Angle2<T> a, Angle2<T> b) {
// Angle2<T> r = Normalize(b - a);
// return r;
// }
template <typename T>
Angle2<T> Angle2<T>::MoveTowards(Angle2<T> fromAngle, Angle2<T> toAngle,
Angle2<T> maxAngle) {
template <>
Angle2<float> Angle2<float>::MoveTowards(Angle2<float> fromAngle,
Angle2<float> toAngle,
Angle2<float> maxAngle) {
float d = toAngle - fromAngle;
float sign = signbit(d) ? -1 : 1;
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;
}
template <typename T>
Angle2<T> Angle2<T>::SineRuleAngle(float a, Angle2<T> beta, float b) {
template <>
Angle2<float> Angle2<float>::SineRuleAngle(float a, Angle2<float> beta,
float b) {
float alpha = asin(a * sin(beta * Angle::Deg2Rad) / b);
return alpha;
}

View File

@ -16,7 +16,10 @@ public:
static Angle2<T> Normalize(Angle2<T> angle);
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,
Angle2<T> maxAngle);