想要以正弦曲线的形式在循环中连续将值从最小变为最大
Want to change a value continuously from min to max to min in a loop as a Sine curve
我正在从事一个游戏中需要算法来改变循环中值的游戏。我已经实施了该算法,但我想它无法正常工作。这是我想要的和我已经实施的内容:
给定:
- 我想散发价格的商品(从最小到最大到最大,再一次,不断地循环)
- 我正在使用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
是(我假定)所需的长度在秒内。
换句话说,您的单位不匹配 - 当公式不起作用时,执行维度分析总是值得的。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- c++如何使用Curl Multi-Interface连续循环
- 如何制作 arduino 串行循环(连续接收数字)
- 集合中不带 for 循环的 n 个连续项的总和
- 更好的做法:永远循环线程或连续线程
- C++ - 如何让移动的点连续循环
- 在我的程序中使用EOF,然后连续循环
- 想要以正弦曲线的形式在循环中连续将值从最小变为最大
- 对于同一循环的这两个连续组,是否有更有效的解决方案
- 如何在for循环中同时使用deque的两个连续元素
- C++:当循环条件连续执行时,循环体从不执行
- C++程序 尝试连续运行两次写入循环时显示".. stopped working"错误
- 在while循环中使用if语句进行连续比较
- Qt 5.5主循环中的连续检查
- 连续 for 循环不会终止C++
- 连续输入字符,如多次使用循环的字符串
- 如何使用基于范围的循环语法在STL容器中的连续对上循环
- listen()是否连续运行,或者我是否需要循环它以保持在套接字上接收连接