我有一个通用的编程挑战给你们。我一直在挠头,试图找出最好的方法来做到这一点......
我在 C 语言中工作,我有一个“速度”值传递给我的程序。范围为 0-255。这个速度值需要对应于程序中内置的毫秒时间延迟。
unsigned char currentSpeed; //this is passed into my function, range 0-255
unsigned long SlowestSpeedMillis = 3000; //in milliseconds
if (currentSpeed > 0)
{
unsigned long Interval = ((256 - currentSpeed)*SlowestSpeedMillis)/255;
}else{ //currentSpeed = 0
//When Interval is zero, the program will freeze
Interval = 0;
}
以下是一些示例结果:
currentSpeed 为1导致3000毫秒(最慢)
currentSpeed 为128导致~1500毫秒(正好是一半)
currentSpeed 为255导致~11毫秒(最快)
问题是我希望它是一个弯曲的结果,它保持在较低的数字中,然后在最后快速达到 3000 ......我希望用户可以选择让程序慢到 3000,但导致它的大多数价值观并不那么重要。例如:
currentSpeed 为1导致3000毫秒(最慢)
currentSpeed 为128导致~750毫秒(潜在的 1/4)
currentSpeed 为255导致~11毫秒(最快,接近于零的任何值)
任何想法如何以编程方式执行此操作?也许有某种方程式?