在NetLogo中导出部分视图

时间:2014-06-07 18:21:35

标签: image netlogo

我想,给定一个海龟列表,将包含这些海龟的视图部分导出为图像。能够导出由一组边界指定的部分视图将解决此问题。也就是说,像export-view-of-turtles list-of-turtlesexport-view-rectangle min-xcor max-xcor min-ycor max-ycor这样的函数是理想的。

显然,完全在NetLogo中运行的解决方案是最好的,但我发现这不太可能:export-view是我所知道的唯一一个导出视图图像的函数,而且只有整个视图。但是,如果有一个插件,那就太棒了。

我的最后一招是只导出视图,然后运行一个相应剪辑它的脚本。如果没有更好的解决方案,我会这样做,并发布脚本。

1 个答案:

答案 0 :(得分:2)

好吧,这有点脏,但似乎有效。基本上,下面在临时文件中输出世界状态,记录有关海龟的数据,根据这些海龟与中心的距离调整视图大小,从记录的数据中重新创建那些海龟,导出视图,然后恢复原始世界状态。这是代码:

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

使用示例。给出:

enter image description here

致电export-view-of-turtles "test.png" [ turtles in-radius 5 ] of turtle 85给出:

enter image description here

注意:

  • 这完全支持世界包装。
  • 它只会显示给定的海龟。不会显示补丁,绘图图层和其他海龟。也就是说,它可以很容易地进行修改,以便显示补丁和其他海龟。
  • 与使用导入和导出世界的任何代码一样(不建议用于此类事情),这可能会在许多极端情况下中断。