Image 在NetLogo中导出部分视图
我想,给定一个海龟列表,将视图中包含这些海龟的部分导出为图像。能够导出由一组边界指定的视图的一部分将解决此问题。也就是说,像Image 在NetLogo中导出部分视图,image,netlogo,Image,Netlogo,我想,给定一个海龟列表,将视图中包含这些海龟的部分导出为图像。能够导出由一组边界指定的视图的一部分将解决此问题。也就是说,像export view of turtles list of turtles或export view rectangle min xcor max xcor min ycor max ycor这样的函数是理想的 显然,一个完全在NetLogo中工作的解决方案是最好的,但我发现这不太可能:导出视图是我所知道的唯一一个导出视图图像的函数,而这只会导出整个视图。然而,如果有一个插
export view of turtles list of turtles
或export view rectangle min xcor max xcor min ycor max ycor
这样的函数是理想的
显然,一个完全在NetLogo中工作的解决方案是最好的,但我发现这不太可能:导出视图
是我所知道的唯一一个导出视图图像的函数,而这只会导出整个视图。然而,如果有一个插件,这将是可怕的
我最后的办法是导出视图,然后运行相应的脚本对其进行剪辑。如果没有更好的解决方案,我会这样做,然后发布脚本。好吧,这有点脏,但似乎有效。基本上,下面的内容在一个临时文件中导出世界状态,记录有关海龟的数据,根据海龟与中心的距离调整视图大小,根据记录的数据仅重新创建海龟,导出视图,然后恢复原始世界状态。代码如下:
to export-view-of-turtles [ filename the-turtles ]
let center-patch min-one-of patches [ sum [ (distance myself ^ 2) ] of the-turtles ]
let turtle-props [ (list
(- distance center-patch * sin towards center-patch) ; xcor relative to center patch
(- distance center-patch * cos towards center-patch) ; ycor relative to center patch
heading size shape label color
) ] of the-turtles
let max-x max map [ first ? + item 3 ? ] turtle-props
let min-x min map [ first ? - item 3 ? ] turtle-props
let max-y max map [ item 1 ? + item 3 ? ] turtle-props
let min-y min map [ item 1 ? - item 3 ? ] turtle-props
let world-state-backup (word "temp-world-" date-and-time ".csv")
export-world world-state-backup
resize-world min-x max-x min-y max-y
foreach turtle-props [
crt 1 [
setxy first ? (item 1 ?)
set heading (item 2 ?)
set size (item 3 ?)
set shape (item 4 ?)
set label (item 5 ?)
set color (item 6 ?)
]
]
export-view filename
import-world world-state-backup
file-delete world-state-backup
end
使用示例。鉴于:
调用turtle 85的导出视图“test.png”[turtles in radius 5]给出:
注:
- 这完全支持世界包装
- 它只会显示给定的海龟。补丁、绘图层和其他海龟将不会显示。这就是说,它可以很容易地修改,使他们补丁和其他海龟显示
- 与任何使用导入和导出世界的代码一样(不推荐用于这种情况),这可能会在许多情况下出现问题
stamp
和export drawing
,但是Bryan提醒我,出于某种原因(也许根本没有什么好的理由),这种语言缺少export drawing
。它确实以API调用的形式存在。