Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 在一块空地上分发海龟_Netlogo - Fatal编程技术网

Netlogo 在一块空地上分发海龟

Netlogo 在一块空地上分发海龟,netlogo,Netlogo,在下图中,黑框表示一个补丁。我希望创建大小的代理- (补丁大小/8) 并将它们分发到补丁的顶部 此外,还可以创建代码,以便: 补丁大小作为输入,并相应地分配它们 以前使用的代码: 我以前的方法是从中心开始,将它们移动到所需的位置,但是如果我想改变代理的数量,它相当长,而且没有效果 ` 请记住,无论面片大小,面片始终为1步宽 (pxcor-.5,pxcor+.5)X(pycor-.5,pycor+.5) 面片大小是一种缩放,它通常不会影响模拟 这么说吧,假设你是在做某种演示或可视化。你为美学所做的

在下图中,黑框表示一个补丁。我希望创建大小的代理- (补丁大小/8)

并将它们分发到补丁的顶部

此外,还可以创建代码,以便:

补丁大小作为输入,并相应地分配它们

以前使用的代码: 我以前的方法是从中心开始,将它们移动到所需的位置,但是如果我想改变代理的数量,它相当长,而且没有效果

`


请记住,无论面片大小,面片始终为1步宽

(pxcor-.5,pxcor+.5)X(pycor-.5,pycor+.5)

面片大小是一种缩放,它通常不会影响模拟

这么说吧,假设你是在做某种演示或可视化。你为美学所做的任何事情都会让事情变慢,但现在你来了

To line-up

    Let c count turtles-here
    Ask turtles-here
       [
       Set ycor pycor - .45
       Set xcor pxcor + .45 - c / patch-size
       Let c c - 1
       ]
     End

如果海龟在一个补丁上>补丁大小,它会搞砸。

请记住,无论补丁大小,补丁始终是1步宽

(pxcor-.5,pxcor+.5)X(pycor-.5,pycor+.5)

面片大小是一种缩放,它通常不会影响模拟

这么说吧,假设你是在做某种演示或可视化。你为美学所做的任何事情都会让事情变慢,但现在你来了

To line-up

    Let c count turtles-here
    Ask turtles-here
       [
       Set ycor pycor - .45
       Set xcor pxcor + .45 - c / patch-size
       Let c c - 1
       ]
     End

如果海龟在一个面片上>面片大小,它会搞砸的。

好的,那么,暂时忘掉面片大小,因为我们将使用单位面片,而不考虑像素的数量

我假设海龟的数量是可变的,我们希望海龟正好适合补丁的宽度,并且海龟的顶部与补丁的顶部边缘对齐

如果海龟的数量是恒定的,或者最大数量是恒定的,并且/或者大小是恒定的,那么代码可以稍微简单一些,因为我们可以避免重新计算一些东西

无论如何,对于C海龟:

  • 海龟之间的距离是
    1/C
  • “半间隙”也很有用,即
    gap/2
  • 这也是海龟的大小
  • 因此,海龟们肯定会刚好穿过这片区域
  • 海龟的ycor将为
    pxyor+.5-半间隙
    • 因为间隙是大小,所以这将海龟放在顶部
  • xcor将是
    pxcor-.5+间隙*N-半间隙

    N是当前海龟的编号。因此,xcor从左边缘的半间隙变化到右边缘的半间隙

    在这里,
    pxcor-.5
    将海龟中心一直移动到左边缘

    然后,
    +gap*N
    将海龟移动到N个海龟宽度上

    然后,
    -half gap
    将海龟向后移动一半大小

    这样可以确保第一只和最后一只海龟刚好接触到边缘

那么,让我们开始吧:

to align-inside-at-top ;; patch procedure
   let counter count turtles-here ;; we will use this as a count-down, after using it in some calculations
   if counter > 0                 ;; could assume there are turtles, but we are not.
   [ let gap 1 / counter          ;; size of turtles, gap between turtles
     let half-gap gap / 2         ;; half-size of turtles
     let ytop  pycor + .5 - half-gap
     let xleft pxcor - .5 - half-gap
     ask turtles-here
     [ set size gap
       set ycor ytop
       set xcor xleft + gap * counter
       set counter counter - 1    ;; so we're placing them from right to left
     ]
   ]
end

希望这有帮助

好的,那么,暂时忘掉面片大小,因为我们将使用单位面片,而不考虑像素的数量

我假设海龟的数量是可变的,我们希望海龟正好适合补丁的宽度,并且海龟的顶部与补丁的顶部边缘对齐

如果海龟的数量是恒定的,或者最大数量是恒定的,并且/或者大小是恒定的,那么代码可以稍微简单一些,因为我们可以避免重新计算一些东西

无论如何,对于C海龟:

  • 海龟之间的距离是
    1/C
  • “半间隙”也很有用,即
    gap/2
  • 这也是海龟的大小
  • 因此,海龟们肯定会刚好穿过这片区域
  • 海龟的ycor将为
    pxyor+.5-半间隙
    • 因为间隙是大小,所以这将海龟放在顶部
  • xcor将是
    pxcor-.5+间隙*N-半间隙

    N是当前海龟的编号。因此,xcor从左边缘的半间隙变化到右边缘的半间隙

    在这里,
    pxcor-.5
    将海龟中心一直移动到左边缘

    然后,
    +gap*N
    将海龟移动到N个海龟宽度上

    然后,
    -half gap
    将海龟向后移动一半大小

    这样可以确保第一只和最后一只海龟刚好接触到边缘

那么,让我们开始吧:

to align-inside-at-top ;; patch procedure
   let counter count turtles-here ;; we will use this as a count-down, after using it in some calculations
   if counter > 0                 ;; could assume there are turtles, but we are not.
   [ let gap 1 / counter          ;; size of turtles, gap between turtles
     let half-gap gap / 2         ;; half-size of turtles
     let ytop  pycor + .5 - half-gap
     let xleft pxcor - .5 - half-gap
     ask turtles-here
     [ set size gap
       set ycor ytop
       set xcor xleft + gap * counter
       set counter counter - 1    ;; so we're placing them from right to left
     ]
   ]
end

希望这有帮助

请解释投票结果。我是NetLogo的新手。抱歉,如果这个问题很琐碎。因为通常使用补丁大小,所以没有区别。请解释下一票。我是NetLogo的新手。如果这个问题很琐碎,很抱歉。因为通常使用补丁大小,所以没有什么区别。您认为
补丁大小
在这里扮演什么角色?我同意你的建议,不要使用它,但是你的代码使用了它。我想他使用它是为了可视化或者其他什么。我向他的愿望屈服了。但是,是的,模拟方面的补丁大小是没有意义的。这只是一种缩放视图的方法。它应该被称为view-scale。但是,即使只是为了可视化而做一些事情,您何时会希望面片大小进入位置计算?无论大小,你不总是想要相同的外观吗?几乎在所有情况下都是这样。我不情愿地扮演魔鬼代言人。但愿我能站在你一边争论。脑海中浮现的一个现象是,非常小的海龟在不同的斑块大小下变得看不见。你能纠正这一点吗?但即使将netlogo用于纯粹的艺术活动,我也看不到改变补丁大小的必要性。我希望OP能给出他的理由。关于想要特别处理非常小的补丁大小,这是一个很好的观点。我看到了。你认为补丁大小在这里扮演什么角色?我同意你的建议,不要使用它