想要以正弦曲线的形式在循环中连续将值从最小变为最大

Want to change a value continuously from min to max to min in a loop as a Sine curve

本文关键字:连续 循环 曲线      更新时间:2023-10-16

我正在从事一个游戏中需要算法来改变循环中值的游戏。我已经实施了该算法,但我想它无法正常工作。这是我想要的和我已经实施的内容:

给定:

  • 我想散发价格的商品(从最小到最大到最大,再一次,不断地循环)
  • 我正在使用cocos2d-x(C ),其中我有一个调度程序,该调度程序以给定的间隔say scheple_interval
  • 运行函数
  • min_price和max_price的商品
  • CurrentPrice
  • 完成一个周期(Min-Max-min)需要花费的时间

当前实现:

SCHEDULE_INTERVAL = 0.3 (sec) (so the function is running every 0.3 secs)
counter = 0;
timeDuration = time to complete one cycle
function 
{
  counter++;
  _amplitude = (maxPrice - minPrice)/2;
  _midValue = (maxPrice + minPrice)/2;
  currentPrice = _midValue + _amplitude * sin (2*PI*counter/timeDuration)
}

为什么我使用正弦波:因为在峰值下,我想使过渡速度慢。

问题:由于某些原因,它的行为不像我希望它行为的方式

我想连续更改定时形式MinPrice-Maxprice-Minprice在定时式中,并在Schedule_interval上运行的循环

请建议任何解决方案。谢谢:)

编辑:在上述实现中不起作用的是,这些值没有根据"定时"变量

而变化。

如果您发布的伪代码准确地反映了您在真实代码中使用的表达式,则您可能想将sin的参数更改为:

2 * PI * (counter * SCHEDULE_INTERVAL) / timeDuration

counter是执行的 number ,而 timeDuration是(我假定)所需的长度在秒内。

换句话说,您的单位不匹配 - 当公式不起作用时,执行维度分析总是值得的。