从距离

时间:2016-12-06 15:15:49

标签: distance netlogo patch

我想在模拟中从所有海龟随机生成的距离eps中选择所有补丁,并将其颜色重置为黄色。这基本上在模拟中围绕每只乌龟绘制了一圈补丁。我尝试了一些不同的选择但没有成功。通过仔细阅读这个论坛,我发现一些看起来很有希望但仍有一些问题的代码(在这里发布)。我感谢任何有关调整此代码或使用其他东西来解决此问题的建议。

let eps2 eps
foreach [ eps2 ]
  [
      ask patches with 
  [
        distance myself > eps2 - 0.5 and
        distance myself < eps2 + 0.5
  ]
  [
    set pcolor yellow
  ]
]

eps是一个乌龟变量,因此使用let命令可以避免在补丁上下文中使用乌龟变量。

foreach命令无法识别eps,因为它不是常数,是否有我可以在这里使用的另一个命令?

1 个答案:

答案 0 :(得分:1)

您可以使用list(见下文),但是......为什么要列出清单?目前,没有必要使用列表。

to setup
  ca
  crt 1
  ask turtle 0 [test]
end
to test
let eps2 10
foreach (list eps2 )  ;you can use `list`
  [
      ask patches with 
  [
        distance myself > eps2 - 0.5 and
        distance myself < eps2 + 0.5
  ]
  [
    set pcolor yellow
  ]
]
end

<强>附录:

由于您表明您实际上并不需要该列表,因此您可以尝试以下方面的内容:

to test2
  ca
  crt 1
  ask encirclingPatches turtle 0 10 1 [set pcolor yellow]
end

to-report encirclingPatches [#t #dist #width]
  let _w2 (#width / 2)
  report patches with [
    distance #t > #dist - _w2
    and
    distance #t < #dist + _w2
  ]
end