Netlogo 在一块空地上分发海龟
在下图中,黑框表示一个补丁。我希望创建大小的代理- (补丁大小/8) 并将它们分发到补丁的顶部 此外,还可以创建代码,以便: 补丁大小作为输入,并相应地分配它们 以前使用的代码: 我以前的方法是从中心开始,将它们移动到所需的位置,但是如果我想改变代理的数量,它相当长,而且没有效果 `Netlogo 在一块空地上分发海龟,netlogo,Netlogo,在下图中,黑框表示一个补丁。我希望创建大小的代理- (补丁大小/8) 并将它们分发到补丁的顶部 此外,还可以创建代码,以便: 补丁大小作为输入,并相应地分配它们 以前使用的代码: 我以前的方法是从中心开始,将它们移动到所需的位置,但是如果我想改变代理的数量,它相当长,而且没有效果 ` 请记住,无论面片大小,面片始终为1步宽 (pxcor-.5,pxcor+.5)X(pycor-.5,pycor+.5) 面片大小是一种缩放,它通常不会影响模拟 这么说吧,假设你是在做某种演示或可视化。你为美学所做的
请记住,无论面片大小,面片始终为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将是
N是当前海龟的编号。因此,xcor从左边缘的半间隙变化到右边缘的半间隙 在这里,pxcor-.5+间隙*N-半间隙
将海龟中心一直移动到左边缘 然后,pxcor-.5
将海龟移动到N个海龟宽度上 然后,+gap*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将是
N是当前海龟的编号。因此,xcor从左边缘的半间隙变化到右边缘的半间隙 在这里,pxcor-.5+间隙*N-半间隙
将海龟中心一直移动到左边缘 然后,pxcor-.5
将海龟移动到N个海龟宽度上 然后,+gap*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能给出他的理由。关于想要特别处理非常小的补丁大小,这是一个很好的观点。我看到了。你认为补丁大小在这里扮演什么角色?我同意你的建议,不要使用它