【问题标题】:Netlogo divide world into upper and lowerNetlogo 将世界分为上层和下层
【发布时间】:2021-10-10 08:05:47
【问题描述】:

大家下午好: 目前我正在 Netlogo 的一个程序中工作,我想将世界划分为上象限和下象限,并要求海龟移动到上象限。我已经从这里回答的上一个问题中弄清楚了如何将世界划分为四个象限,但我不知道如何将其划分为两个。

非常感谢您的帮助

ask patches with [ pxcor <= max-pxcor and pxcor > 0  and pycor > 0]
  [
    set pcolor red
    set quadrant 1

  ]

  ask patches with [ pxcor >= min-pxcor and pxcor < 0  and pycor > 0]
  [
    set pcolor blue
    set quadrant 2
  ]

  ask patches with [ pxcor <= max-pxcor and pxcor > 0  and pycor < 0]
  [
    set pcolor green
    set quadrant 3
  ]

  ask patches with [ pxcor >= min-pxcor and pxcor < 0  and pycor < 0]
  [
    set pcolor yellow
    set quadrant 4
  ]

【问题讨论】:

  • 我还想指出,在 OP 的示例代码中,短语“pxcor

标签: netlogo


【解决方案1】:

鉴于您对下象限和上象限感兴趣,您只需要查看 y 坐标。具体条件取决于你的世界的原点(即坐标 [0;0])在哪里。

如果您的世界的原点位于默认位置,即中心,则执行以下操作:

patches-own [
 quadrant 
]

to setup
  clear-all
  ask patches [
   ifelse (pycor > 0)
    [set quadrant 1]
    [set quadrant 2]
  ]
end

如果你的世界的原点在一个角落(例如,我假设在这种情况下是左下角),只需:

patches-own [
 quadrant 
]

to setup
  clear-all
  ask patches [
   ifelse (pycor > max-pycor / 2)
    [set quadrant 1]
    [set quadrant 2]
  ]
end

如果您事先不知道您的世界的起源将在哪里,或者如果您的世界的起源比上述两个示例更不常见,您可以采用适合任何情况的更通用的方法:

patches-own [
 quadrant 
]

to setup
  clear-all
  
  let y-extent (max-pycor - min-pycor + 1)
  ask patches [
   ifelse (pycor > y-extent / 2)
    [set quadrant 1]
    [set quadrant 2]
  ]
end

【讨论】:

  • 好的,我知道是什么在困扰我:你的 y 范围只是世界高度。所以我认为你的意思是“IF PYCOR > MIN-PYCOR + (WORLD-HEIGHT - 1) / 2”或多或少,除非最小值和最大值不是奇数或偶数。我们也忽略了有一行补丁为零的事实。他们是在quad 1,quad 2,还是两者都没有?
  • 哎呀,正确,错过了第三个解决方案中的那部分(另外,我忽略了一个原始报告器已经存在为world-height!)。至于补丁的中间行:我认为在问题中隐含的是 OP 知道奇数行不能完美地分成两部分(除非他们想要一个缓冲区,但这是不可能的),所以他们很高兴将其作为展示方法的一种方式。因为,毕竟,如果一个世界需要完全减半,我会假设作者会事先相应地调整世界的范围......是否过于假设?
  • 也许吧。我倾向于假设人们问相当简单的问题(对我们来说)可能不熟悉 NetLogo 环境的特性,例如以整数为中心的网格正方形(补丁)与普通的“方格纸”网格相比,网格正方形的边缘在主要部门。唯一的办法是放弃方形海龟的补丁,并将所有的位置数学在两个轴上移动 0.5。我从来没有对初学者期望过的东西。
猜你喜欢
  • 2014-07-05
  • 2017-09-30
  • 2022-07-30
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多