Added cosine/sine rules
This commit is contained in:
parent
1707751bf3
commit
6b75707a2e
@ -14,6 +14,11 @@ class Angle {
|
||||
static float Clamp(float angle, float min, float max);
|
||||
static float Difference(float a, float b);
|
||||
static float MoveTowards(float fromAngle, float toAngle, float maxAngle);
|
||||
|
||||
static float CosineRuleSide(float a, float b, float gamma);
|
||||
static float CosineRuleAngle(float a, float b, float c);
|
||||
|
||||
static float SineRuleAngle(float a, float beta, float c);
|
||||
};
|
||||
|
||||
#endif
|
@ -37,3 +37,23 @@ float Angle::MoveTowards(float fromAngle, float toAngle, float maxAngle) {
|
||||
d = sign * Float::Clamp(fabs(d), 0, maxAngle);
|
||||
return fromAngle + d;
|
||||
}
|
||||
|
||||
float Angle::CosineRuleSide(float a, float b, float gamma) {
|
||||
float a2 = a * a;
|
||||
float b2 = b * b;
|
||||
float c = sqrtf(a2 + b2 - 2 * a * b * cos(gamma * Angle::Deg2Rad));
|
||||
return c;
|
||||
}
|
||||
|
||||
float Angle::CosineRuleAngle(float a, float b, float c) {
|
||||
float a2 = a * a;
|
||||
float b2 = b * b;
|
||||
float c2 = c * c;
|
||||
float gamma = acos((a2 + b2 - c2) / (2 * a * b)) * Angle::Rad2Deg;
|
||||
return gamma;
|
||||
}
|
||||
|
||||
float Angle::SineRuleAngle(float a, float beta, float b) {
|
||||
float alpha = asin(a * sin(beta * Angle::Deg2Rad) / b);
|
||||
return alpha;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user