gpt4 book ai didi

c++ - 在范围内振荡一个值

转载 作者:行者123 更新时间:2023-11-30 01:13:25 25 4
gpt4 key购买 nike

如何在一个范围内振荡,但时间间隔恒定?我想出了下一个算法,但问题是增加范围会使结果值也太快。

const int RANGE = 5; // Oscillate between -5 and 5
long start = 0;

float getStepTime()
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
long now = ts.tv_sec * 1000 + ts.tv_nsec / 1000000ULL;

if (start == 0) { start = now; }

float ellapsed = (now - start) / 1000.0f;
float result = sin(ellapsed) * RANGE;

printf("%f", result);
return result;
}

最佳答案

这个公式

float result = sin(ellapsed) * RANGE;

产生恒定频率的输出,过零之间的时间是恒定的。
假设您需要一个大约为 0 的恒定斜率,您可以使用:

float result = sin(ellapsed/RANGE) * RANGE;

关于c++ - 在范围内振荡一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208510/

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