C++ map() 函数有什么作用
What does the C++ map() function do
我目前正在看下面的代码(可以是found here)
void MPU6050::CalibrateAccel(uint8_t Loops,uint8_t OffsetSaveAddress) {
double kP = 0.15;
double kI = 8;
float x;
x = (100 - map(Loops, 1, 5, 20, 0)) * .01;
kP *= x;
kI *= x;
PID( 0x3B, OffsetSaveAddress, kP, kI, Loops);
}
具体来说,我很难理解这行:
x = (100 - map(Loops, 1, 5, 20, 0)) * .01;
在做什么?
我能为 map() 找到的最佳匹配函数 is here 但它似乎与传递给函数的整数参数不匹配。
显然我会 运行 这段代码,但不幸的是我还无法编译它。
我是否正确地找到了被调用的函数,这个函数在给定参数下的行为是什么?我假设这是一个 map() 函数,类似于其他 languages/frameworks 中的任何其他典型映射函数,例如 python、jquery 等
谁能指导我正确的方向?
map
在 math
中定义,将数字从一个范围重新映射到另一个范围。语法是 map(value, fromLow, fromHigh, toLow, toHigh)
因此,map(Loops, 1, 5, 20, 0)) 意味着变量 Loops
的值最初将在 (1,5) 之间搜索,但结果将在 20 到 0 之间,因为它重新映射。
我目前正在看下面的代码(可以是found here)
void MPU6050::CalibrateAccel(uint8_t Loops,uint8_t OffsetSaveAddress) {
double kP = 0.15;
double kI = 8;
float x;
x = (100 - map(Loops, 1, 5, 20, 0)) * .01;
kP *= x;
kI *= x;
PID( 0x3B, OffsetSaveAddress, kP, kI, Loops);
}
具体来说,我很难理解这行:
x = (100 - map(Loops, 1, 5, 20, 0)) * .01;
在做什么?
我能为 map() 找到的最佳匹配函数 is here 但它似乎与传递给函数的整数参数不匹配。
显然我会 运行 这段代码,但不幸的是我还无法编译它。
我是否正确地找到了被调用的函数,这个函数在给定参数下的行为是什么?我假设这是一个 map() 函数,类似于其他 languages/frameworks 中的任何其他典型映射函数,例如 python、jquery 等
谁能指导我正确的方向?
map
在 math
中定义,将数字从一个范围重新映射到另一个范围。语法是 map(value, fromLow, fromHigh, toLow, toHigh)
因此,map(Loops, 1, 5, 20, 0)) 意味着变量 Loops
的值最初将在 (1,5) 之间搜索,但结果将在 20 到 0 之间,因为它重新映射。