【问题标题】:Turtles with size in NetlogoNetlogo 中大小的海龟
【发布时间】:2015-11-06 12:56:13
【问题描述】:

我需要创建具有特定尺寸的海龟并检查重叠。 由于每个定义的海龟没有扩展名,我想也许 gis 扩展名可能有用。

有一种方法可以将信封与乌龟相关联,例如

let gis:envelope-of self (list (xcor - 2 ) (xcor + 2) (ycor - 2) (ycor + 2)) 

但我不知道如何使用它来绘制信封并检查重叠。

另一种方法可能是放弃一只海龟有维度的想法,并通过使用从海龟创建一个 gis 数据集

gis:turtle-dataset turtle-set

但我不知道如何用这个创建一个多边形:-(

有什么想法吗?

【问题讨论】:

  • 我从未使用过扩展,但海龟有大小。 ccl.northwestern.edu/netlogo/docs/dictionary.html#size这是你的意思吗?
  • 海龟的形状重要吗?如果它们是圆圈,例如检查重叠并不太难。
  • 我一直坚持这个尺寸只是为了展示,但我会检查一下。是的,形状和大小很重要:这是关于房屋分布的工作的开始,所以我必须将其映射到实际数据。但你是对的,如果形状是圆形,我可以使用半径内原语。但是,我可以创建一个报告器并使用它来检查重叠。
  • 如果你有一个好的解决方案,请让我参与进来。这是一个有趣的问题

标签: gis netlogo


【解决方案1】:

更新赛斯的评论,以明确圈子和其他人的不同方法。

如果海龟是圆形,那么如果两只海龟的大小之和 distance primitive。

但是,如果您有正方形或其他形状,那么您将不得不使用 heading 和各种三角函数做一些花哨的东西,并且需要 x 和 y 方向的位置差异(@987654323 中的差异@ 和 ycor 分别。这样的事情会让你开始:

to-report xdiff [ turt1 turt2 ]
  report [xcor] of turt1 - [xcor] of turt2
end

【讨论】:

  • 您的find-distance 与内置的distance 原语相同——无需自己计算,只需编写[distance turt1] of turt2distance 实际上更好,因为它知道包装和非包装世界;您的代码仅适用于非包装世界。
  • 感谢您的记者。目前我不想为此建立一个记者。我要问那些写扩展的人,如果他们能想出s.th。不过,我会通知你的:-)
  • 嗯,其中一位贡献者是 Seth Tissue :-) 你认为这可以通过 GIS 扩展解决吗?
【解决方案2】:

最后我采取了一个简单的方法: 由于我的对象不必移动,我使用相邻的补丁来形成所需大小的块。在我占用一个新补丁之前,我检查它是否已经被使用,如果是,我删除所有新占用的补丁。 不是很通用,但到目前为止它为我做了工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多