weight_limit(10)
{
if(n<1)
- throw InvalidParameterValue("Must have at leats one speed step");
+ throw invalid_argument("SpeedQuantizer::SpeedQuantizer");
}
void SpeedQuantizer::learn(unsigned i, float s, float w)
{
if(i>=steps.size())
- throw InvalidParameterValue("Speed step index out of range");
+ throw out_of_range("SpeedQuantizer::learn");
steps[i].add(s, w);
}
float SpeedQuantizer::get_speed(unsigned i) const
{
+ if(i>=steps.size())
+ throw out_of_range("SpeedQuantizer::get_speed");
if(i==0)
return 0;
if(steps[i].weight>=weight_limit)
else
return 0;
}
- return min(min(static_cast<unsigned>(low*speed/steps[low].speed), steps.size()-1), last+limit);
+ return min(min<unsigned>(low*speed/steps[low].speed, steps.size()-1), last+limit);
}
float f = (speed-steps[low].speed)/(steps[high].speed-steps[low].speed);