简单的绘制和移动模拟使用以下内容:
时钟计时器。间隔: 200ms 。 移动计时器。间隔: 1ms 。 移动常数。值: 2。
每次移动计时器勾选时,图片会根据移动常数加上移动。 (即picture.X = picture.X +运动常数)
问题是快进。用户可以随时快速进行模拟。
如何更改这三个值(时钟计时器,移动计时器,运动常数),以便在快速转发运行期间更快地模拟速度而不牺牲完整性?
答案 0 :(得分:2)
如果用于快进的整数倍(1x,2x,3x,...)足够,则可以在定时器处理函数期间多次运行模拟函数。
我不知道你在使用时钟计时器做了什么,但同样的原则也适用于它正在做的事情。
答案 1 :(得分:1)
你可以拥有一个独立于“实时”的“内部时间”。当系统以基本速度运行时,这两个同步增加(定时器的每个滴答 - 设置为1毫秒 - 内部时间增加1毫秒。
如果你有一个2倍的加速乘数,那么每个定时器滴答的内部时间加2ms。
接下来,你必须根据内部时间计算位置,可能还有像
这样的函数newposition = startposition + speed * time
答案 2 :(得分:1)
汉斯暗示,在大多数模拟中,时间和空间都有“粒度”。然后通过跳过时间间隔('滴答')来安排代理。但是,如果您需要更灵活且经过良好测试的调度,您可能希望从ABM仿真包借用调度程序,例如Mason(用于Java)或Repast(Java或C ++),或查看其开源调度程序类代码并翻译成另一种语言。