简单的绘制和移动模拟使用以下内容:
一个时钟计时器。间隔:200。A运动定时器.间隔: 1ms。运动常数。值: 2。
每次运动定时器滴答滴答时,图片就会按运动常数加起来移动。(即picture.X = picture.X +运动常数)
问题是快速转发。用户可以随时对仿真进行快速转发.
我如何改变这三个值(时钟定时器,运动定时器,运动常数),使模拟速度更快,而不牺牲完整性在快速转发运行?
发布于 2012-03-16 13:39:13
如果整数倍数(1x,2x,3x,.)对于快速转发来说,您可以在计时器处理函数期间运行几次模拟函数。
我不知道你在用时钟计时器做什么,但同样的原则也适用于它所做的任何事情。
发布于 2012-03-16 15:56:09
你可以有一个独立于“实时”的“内部时间”。当系统以基本速度运行时,这两个时间同步增加(定时器的每一个滴答--即设置为1ms )--会使内部时间增加1ms。
当你有一个2倍的加速比乘法器,然后为每个计时器滴答增加2ms的内部时间。
接下来,您必须根据内部时间计算位置,可能需要一个类似的函数
newposition = startposition + speed * time发布于 2012-03-17 16:52:55
正如汉斯所暗示的,在大多数模拟中都存在“晶粒尺寸”。然后,通过跳过时间间隔('ticks')来调度代理。但是,如果您需要更灵活和测试更好的调度,您可能需要从ABM模拟包(如Mason (for Java)或Repast (Java或C++) )借用调度程序,或者查看它们的开源调度程序类代码并转换到另一种语言。
https://stackoverflow.com/questions/9738273
复制相似问题