我有一个模型,我想测量一只乌龟以给定的速度从一个点到另一个点移动所需的时间,使用地图的比例和速度/ fd运动来量化经过的实时时间。
我将速度设置为所有船只的随机数(UI上的全局变量输入)以及具有路径坐标的每只乌龟的列表。我使用 time = distance / speed 的公式,但无法弄清楚如何准确计算时间。
速度设置为30左右,我想用km / h。地图的比例是每个补丁1000m x 1000m,所以我尝试使用1000的因子来修复计算无济于事。下面是我的时间计算。
to move
tick
ask ships with [length current-path != 0]
[
let x1 xcor
let x2 [pxcor] of first current-path
let y1 ycor
let y2 [pycor] of first current-path
let distance-traveled sqrt ((x2 - x1)^ 2 + (y2 - y1)^ 2)
set time ((distance-traveled * meters-per-patch) / (speed)
set timelist lput time timelist
set totaltime sum timelist
go-to-next-patch-in-current-path
]
end
这种魔药称之为运动。由于速度的数字在10以内,我正在分组速度/ 1000,我希望海龟每次打勾移动少于1个补丁,以允许它直接落在列表中的补丁坐标上。
to go-to-next-patch-in-current-path
face first current-path
ifelse distance first current-path < .1
[
move-to first current-path
set current-path remove-item 0 current-path
]
[
fd speed / 1000
set heading towards first current-path
]
end
非常感谢任何帮助,非常感谢。
答案 0 :(得分:0)
不管。如果你想让某人从x1,y1移动到x2,y2。你需要计算到x2 y2的距离。假设您需要4秒钟从x1,y1移动到x2,y2
对于乌龟:
在您的设置上或当您到达x1,y1
时let t 3
let d distancexy x2 y2
let velocity d / t
facexy x2 y2
虽然你不在x2,y2
fd velocity
我认为你的问题是每次重复你都在重新计算你的速度。你说如果你在5米之外,想要花5秒钟,移动1米。然后在下一个时间单位,你将在4米远,并想要花5秒,移动.8米。等