在下图中,黑框表示一个补丁。我希望创造大小的代理人 - (膜片大小/ 8)
并将它们分发到补丁的顶部。
此外,可以创建一个代码:
Patch-Size作为输入并相应地分发它们。
以前使用的代码: 我之前的方法在中心发芽,并将它们移动到与所需位置对齐,但是如果我希望改变代理的数量,它是相当长的并且无效。
`
答案 0 :(得分:2)
请记住,无论补丁大小的补丁总是一步到位。
(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 :(得分:2)
好的,所以,暂时忘记补丁大小,因为我们将使用单位补丁,而不考虑像素数。
我假设海龟的数量是可变的,我们希望海龟完全适合补丁的宽度,并且海龟的顶部与补丁的顶部边缘对齐。
如果海龟的数量是常数,或者最大数量是常数,和/或大小是不变的,那么代码可以更简单一些,因为我们可以避免重新计算某些东西。
无论如何,对于C龟来说:
1 / C
gap / 2
pxyor + .5 - half-gap
xcor将为pxcor - .5 + gap * N - half-gap
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
希望这有帮助!