在整个世界中间用精确的百分比制作盒子 我想在Netlogo世界的中间制造盒子< /P>

在整个世界中间用精确的百分比制作盒子 我想在Netlogo世界的中间制造盒子< /P>,netlogo,Netlogo,我设法做了一个盒子,但在我的空间的角落里,原点的位置是角落,最大pxcor=9,最大pxpycor=9 代码为25% to setup-area-25% ask patches with [pxcor >= 5 and pycor >= 5] [ set pcolor blue ] end 另一个代码是50% to setup-area-50% ask patches with [pxcor >= -5 and pycor >= 5] [ s

我设法做了一个盒子,但在我的空间的角落里,原点的位置是角落,最大pxcor=9,最大pxpycor=9

代码为25%

  to setup-area-25%
  ask patches with [pxcor >= 5 and pycor >= 5] [ set pcolor blue ]   
  end
另一个代码是50%

   to setup-area-50%
  ask patches with [pxcor >= -5 and pycor >= 5] [ set pcolor blue ]
  end
我想让蓝色区域代表世界的25和50%,但在世界上我尝试在半径范围内使用,但是它没有给我一个正确的区域。
提前感谢

这里有一个快速而肮脏的方法,它不一定能给出你想要的确切百分比,但可能足够好,这取决于你想做什么:

to make-box [ pct box-color ]
  let side round sqrt (count patches * (pct / 100))
  let x min-pxcor + ceiling ((world-width  - side) / 2)
  let y min-pycor + ceiling ((world-height - side) / 2)
  ask patches with [
    pxcor >= x and pxcor < x + side and
    pycor >= y and pycor < y + side
  ] [
    set pcolor box-color
  ]
end

找到最接近的因子对的算法松散。

非常感谢你的回复,但是我确实需要完美的百分比,中间的,因为我也需要75,但是根据这个规则,它不会被计算为75,非常感谢你的回复。我不是数学专家,但当我试着选择75%时,它也给了我50%,而且它给了我长方形,而不是中间的正方形,这个想法是以不同的百分比作为控制策略,并且被其余的空间包围,所以四个边需要被非控制区域(中间的正方形)包围,我真的很抱歉我的英语不好。再次非常感谢这就是我试图解释的:如果你使用代码的第一个版本,你的方框将是正方形的,但是百分比可能不准确。如果使用第二个版本,百分比将是精确的(除非矩形环绕),但长方体可能不是正方形。你不能两全其美。我的建议是:使用第一个版本,这样你就可以保证有一个正方形的盒子,但要让你的世界足够大,百分比足够接近你想要的。非常感谢你的回复,我现在理解你了,但是我可以问你,如果我尝试制作世界100块补丁,我可以给世界中心周围的25、50或75块补丁上色吗?100块补丁会很小。默认的NetLogo世界是33*33,因此有1089个补丁。如果你想让你的世界正好有1000块,那么它就不是正方形的。中间的方框也不是正方形,因为250, 500和750都没有整数平方根。也许有可能找到一个25%、50%和75%都是正方形的世界大小。我不知道。
to make-box [ pct box-color ]
  let n round (count patches * (pct / 100))
  let h height (floor sqrt n) n
  let w (n / h)
  let x min-pxcor + ceiling ((world-width  - w) / 2)
  let y min-pycor + ceiling ((world-height - h) / 2)
  ask patches with [
    pxcor >= x and pxcor < x + w and
    pycor >= y and pycor < y + h
  ] [
    set pcolor box-color
  ]
end

to-report height [ h n ]
  report ifelse-value (n mod h = 0) [ h ] [ height (h - 1) n ]
end