math - 如何根据增量时间使 x += (1 - x) 正确工作?
问题描述
假设 Time.deltatime 可用于获取代码更新之间的实时时间。
所以,如果我有一个总和,并且我想让它基于实时运行,我会这样做:
x += 1;
进入这个:
x += 1 * Time.deltatime;
我的问题是:我怎么能用这段代码做同样的事情:
x += (1 - x)*0.1;
这是我用来顺利接近 1 的简单代码。问题是我不能简单地做
x += (1 - x)*Time.deltatime
因为这显然不会使它基于实时工作。我应该如何进行?
让我们假设代码每秒运行 4 次。如果 x 从 0 开始,会是这样。
代码是
x += (1 - x)*0.1
每个步骤的结果将是:
step 1: x = 0.1
step 2: x = 0.19
step 3: x = 0.271
step 4: x = 0.3439
我怎么能以同样的方式达到这个效果,但每秒只运行 2 次,像这样:
step 1: x = 0.19
step 2: x = 0.3439
那么代码是什么?
解决方案
如果您将您的系列视为迭代计数的函数f(t)
,t
那么
f(t) = 1 - 0.9^t
这^
是电源运算符。
因此,如果我们假设时间增量 1 对应于您的原始系列,您可以使用以下公式:
x := 1 - (1 - x) * 0.9^deltatime
推荐阅读
- php - Laravel按顺序查询记录?
- node.js - 模拟点击事件在 Jest 和 Enzyme 中不起作用
- python - Selenium:无法用发送键和执行脚本填充输入字段
- png - BMP 文件到 PNG 文件转换器
- aix - 在 AIX 7.1 上检查文件对于给定用户是否可执行的命令
- reactjs - 获取位置的未知错误 GeolocationPositionError 代码 2 - Firefox Linux Mint
- ios - 使用 AWS Appsync 和 GraphQL 查询 Dynamo DB 中的多个表
- java - hadoop3.1.3无法运行jar文件
- reactjs - 如何使用 react-native 处理自定义字体和 fontWeight
- python - 重塑(n 行 xn 列)python 列表到 pandas DataFame