生成具有随机大小和位置的河流
Generate rivers with random size and location
我正在做一个较小的项目,有一个问题我找不到任何解决方案。
我想随机生成河流。我的计划是随机生成一些大小和位置不同的河流。有谁知道怎么随机生成河流吗?
我已经尝试了几种方法。我确实设法生成了 this,但我希望它更像河流(直线)而不是 'clustered'。
我用下面的代码得到了上面的图片。
; Generating random rivers.
ca
ask patches with [pycor = (random 16) or pxcor = (random 16)]
[
set pcolor brown
ask patches in-radius random 3 [set pcolor brown]
]
感谢您抽出宝贵时间!
_______________________________________________________________________________
编辑:
我有一些进步,看起来像this。这是我最接近我想要的。
to setup
ca
ask n-of 2 patches [
spread-right
]
ask n-of 2 patches[
spread-left
]
ask n-of 2 patches[
spread-down
]
ask n-of 2 patches[
spread-up
]
end
to spread-right
if pxcor < max-pxcor [
ask n-of 1 neighbors with [ pxcor = [pxcor] of myself + 1] [
set pcolor brown
spread-right
]
]
end
to spread-left
if pxcor > min-pxcor [
ask n-of 1 neighbors with [ pxcor = [pxcor] of myself - 1] [
set pcolor brown
spread-left
]
]
end
to spread-down
if pycor > min-pycor [
ask n-of 1 neighbors with [pycor = [pycor] of myself - 1][
set pcolor brown
spread-down
]
]
end
to spread-up
if pycor > max-pycor [
ask n-of 1 neighbors with [pycor = [pycor] of myself + 1][
set pcolor brown
spread-up
]
]
end
您可以简单地使用(半)随机行走的乌龟四处走动并为其行走的斑块着色。然后用你的展开码在某些地方加粗
感谢@Jumboman 的建议,我用这段代码解决了它。根据世界的大小和功能的首选大小,可以更改设置的数字。
to setup
ca
;Generating physical features.
ask n-of 5 patches[ sprout 1[
set pcolor brown]
]
let i 0
while [ i < (max-pycor )][
ask turtles [
fd 1
set pcolor black
ifelse (random 20 <= 1)
[
rt one-of [-90 0 90]
forward 1
]
[
fd 1
set pcolor brown
fd 1
set pcolor brown
]
set pcolor brown
set i i + 1]
]
ask n-of max-pxcor patches with [pcolor = brown][
ask patches in-radius 1 with [pcolor = black][
set pcolor brown]
]
ask turtles [die]
end
我正在做一个较小的项目,有一个问题我找不到任何解决方案。
我想随机生成河流。我的计划是随机生成一些大小和位置不同的河流。有谁知道怎么随机生成河流吗?
我已经尝试了几种方法。我确实设法生成了 this,但我希望它更像河流(直线)而不是 'clustered'。
我用下面的代码得到了上面的图片。
; Generating random rivers.
ca
ask patches with [pycor = (random 16) or pxcor = (random 16)]
[
set pcolor brown
ask patches in-radius random 3 [set pcolor brown]
]
感谢您抽出宝贵时间!
_______________________________________________________________________________
编辑:
我有一些进步,看起来像this。这是我最接近我想要的。
to setup
ca
ask n-of 2 patches [
spread-right
]
ask n-of 2 patches[
spread-left
]
ask n-of 2 patches[
spread-down
]
ask n-of 2 patches[
spread-up
]
end
to spread-right
if pxcor < max-pxcor [
ask n-of 1 neighbors with [ pxcor = [pxcor] of myself + 1] [
set pcolor brown
spread-right
]
]
end
to spread-left
if pxcor > min-pxcor [
ask n-of 1 neighbors with [ pxcor = [pxcor] of myself - 1] [
set pcolor brown
spread-left
]
]
end
to spread-down
if pycor > min-pycor [
ask n-of 1 neighbors with [pycor = [pycor] of myself - 1][
set pcolor brown
spread-down
]
]
end
to spread-up
if pycor > max-pycor [
ask n-of 1 neighbors with [pycor = [pycor] of myself + 1][
set pcolor brown
spread-up
]
]
end
您可以简单地使用(半)随机行走的乌龟四处走动并为其行走的斑块着色。然后用你的展开码在某些地方加粗
感谢@Jumboman 的建议,我用这段代码解决了它。根据世界的大小和功能的首选大小,可以更改设置的数字。
to setup
ca
;Generating physical features.
ask n-of 5 patches[ sprout 1[
set pcolor brown]
]
let i 0
while [ i < (max-pycor )][
ask turtles [
fd 1
set pcolor black
ifelse (random 20 <= 1)
[
rt one-of [-90 0 90]
forward 1
]
[
fd 1
set pcolor brown
fd 1
set pcolor brown
]
set pcolor brown
set i i + 1]
]
ask n-of max-pxcor patches with [pcolor = brown][
ask patches in-radius 1 with [pcolor = black][
set pcolor brown]
]
ask turtles [die]
end