gpt4 book ai didi

C - 返回曲线结果的函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:10 25 4
gpt4 key购买 nike

我有一个通用的编程挑战要交给你们。我一直在绞尽脑汁想找出最好的方法...

我在 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;
}

这是一些示例结果:
1 的当前速度导致 3000 毫秒(最慢)
128 的当前速度导致 ~1500 毫秒(恰好一半)
255 的当前速度导致 ~11 毫秒(最快)

问题是我希望它是一个弯曲的结果,它保持在较低的数字,然后在最后迅速达到 3000...我希望用户可以选择让程序运行得尽可能慢为 3000,但导致它的大多数值并不那么重要。比如这样:
1 的当前速度导致 3000 毫秒(最慢)
128 的当前速度导致 ~750 毫秒(1/4 的潜力)
255 的当前速度导致 ~11 毫秒(最快,任何接近于零的值)

关于如何以编程方式执行此操作的任何想法?也许用某种方程式?

最佳答案

通常在数学中你可能会这样做:

(currentSpeed / 255) * 3000

对于线性,要获得一点曲线,请使用幂:

((currentSpeed / 255) * (currentSpeed / 255)) * 3000

但是,在整数数学中这不起作用,因为 (currentSpeed/255) 几乎总是零。

要在没有 float 的情况下执行此操作,您必须在除法之前先按比例放大。

((3000 * currentSpeed) * currentSpeed) / (255 * 255)

关于C - 返回曲线结果的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com