mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 06:15:16 +03:00
Merge pull request #2822 from manors/tidy-scaleRange
Tidy scaleRange code
This commit is contained in:
commit
e555f0ddab
2 changed files with 40 additions and 1 deletions
|
@ -155,7 +155,7 @@ float degreesToRadians(int16_t degrees)
|
|||
int scaleRange(int x, int srcMin, int srcMax, int destMin, int destMax) {
|
||||
long int a = ((long int) destMax - (long int) destMin) * ((long int) x - (long int) srcMin);
|
||||
long int b = (long int) srcMax - (long int) srcMin;
|
||||
return ((a / b) - (destMax - destMin)) + destMax;
|
||||
return (a / b) + destMin;
|
||||
}
|
||||
|
||||
// Normalize a vector
|
||||
|
|
|
@ -31,6 +31,45 @@ extern "C" {
|
|||
#include "unittest_macros.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
|
||||
TEST(MathsUnittest, TestScaleRange)
|
||||
{
|
||||
// Within bounds
|
||||
EXPECT_EQ(scaleRange(0, 0, 10, 0, 100), 0);
|
||||
EXPECT_EQ(scaleRange(10, 0, 10, 0, 100), 100);
|
||||
EXPECT_EQ(scaleRange(0, 0, 100, 0, 10), 0);
|
||||
EXPECT_EQ(scaleRange(100, 0, 100, 0, 10), 10);
|
||||
|
||||
// Scale up
|
||||
EXPECT_EQ(scaleRange(1, 0, 10, 0, 100), 10);
|
||||
EXPECT_EQ(scaleRange(2, 0, 10, 0, 100), 20);
|
||||
EXPECT_EQ(scaleRange(5, 0, 10, 0, 100), 50);
|
||||
|
||||
// Scale down
|
||||
EXPECT_EQ(scaleRange(10, 0, 100, 0, 10), 1);
|
||||
EXPECT_EQ(scaleRange(20, 0, 100, 0, 10), 2);
|
||||
EXPECT_EQ(scaleRange(50, 0, 100, 0, 10), 5);
|
||||
}
|
||||
|
||||
TEST(MathsUnittest, TestScaleRangeNegatives)
|
||||
{
|
||||
// Within bounds
|
||||
EXPECT_EQ(scaleRange(0, -10, 0, -100, 0), 0);
|
||||
EXPECT_EQ(scaleRange(-10, -10, 0, -100, 0), -100);
|
||||
EXPECT_EQ(scaleRange(0, -100, 0, -10, 0), 0);
|
||||
EXPECT_EQ(scaleRange(-100, -100, 0, -10, 0), -10);
|
||||
|
||||
// Scale up
|
||||
EXPECT_EQ(scaleRange(-1, -10, 0, -100, 0), -10);
|
||||
EXPECT_EQ(scaleRange(-2, -10, 0, -100, 0), -20);
|
||||
EXPECT_EQ(scaleRange(-5, -10, 0, -100, 0), -50);
|
||||
|
||||
// Scale down
|
||||
EXPECT_EQ(scaleRange(-10, -100, 0, -10, 0), -1);
|
||||
EXPECT_EQ(scaleRange(-20, -100, 0, -10, 0), -2);
|
||||
EXPECT_EQ(scaleRange(-50, -100, 0, -10, 0), -5);
|
||||
}
|
||||
|
||||
TEST(MathsUnittest, TestConstrain)
|
||||
{
|
||||
// Within bounds
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue