【问题标题】:Netlogo export-world formatNetlogo 导出世界格式
【发布时间】:2015-10-12 12:21:44
【问题描述】:

我一直在尝试弄清楚导出世界是如何工作的,特别是绘图部分是如何工作的。

我创建了以下代码以使用默认环境大小 max-pxcor 和 max-pycor 16 进行实验。如果您运行本文末尾显示的这段代码,生成的每个文件将是 5 兆字节,所以它是运行一分钟后很容易用完超过 1 GB 的数据。

无论如何,我的问题是:绘图部分如何工作?我看到第一个条目是-16.4, 16.4。我在下面的简单表格中总结了我的一些观察。第一列是海龟移动了多少,而第二列显示 CSV 文件中的部分输出。

0.001  FF1D9F78
0.016  FF1D9F78FF1D9F78
0.093  FF1D9F78FF1D9F78FF1D9F78

我还看到第一个条目是在海龟移动 0.001 时创建的。第二个条目似乎是在海龟移动 0.016 时创建的,第三个条目是 0.093。

我正在尝试找出可能的模式,但似乎没有。 CSV 文件中的条目之一代表了多少海龟运动?

谢谢。

----代码如下。

globals
[
  totalAmount
]

to setup
  ca
  crt 1
  [
    setxy -16.4 16.4
    pd
    set heading 90
    set color turquoise
  ]
  set totalAmount 0
end

to go
  ask turtles
  [
    fd moveAmount
  ]
  set totalAmount moveAmount + totalAmount
  export
end

to export
  let filetemp word "turtletest" totalAmount
  let filename word filetemp ".csv"
  ;print filename
  export-world filename
end 

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    绘图层只是一个位图——一个像素网格。它不知道海龟移动了什么以及移动了多远,它只知道海龟在移动时着色的像素。在内部,它是一个 java.awt.image.BufferedImageTYPE_INT_ARGB 编码。

    此代码已将其写入导出的世界文件:

    https://github.com/NetLogo/NetLogo/blob/533131ddb63da21ac35639e61d67601a3dae7aa2/src/main/org/nlogo/render/TrailDrawer.java#L217-L228

    其中colors 是支持 BufferedImage 的整数数组,toHexString 只是将字节写入十六进制数字 (code)。

    如果您的图像大部分是黑色的,您会在文件中看到一大堆 00 字节。

    至于您的非零字节,在我看来 FF1D9F78 是一个像素,alpha = FF(不透明),红色 = 29,绿色 = 159,蓝色 = 120。至少,我认为这是正确的解释?这对你在屏幕上看到的东西是合理的吗?也许 A-R-G-B 字节的顺序相反?要仔细检查它,我需要做export-view,然后在一个程序中查看生成的 PNG 文件,它可以告诉我单个像素的 RGB 值——我现在没有这样的程序。但希望这会让你走上正轨。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      相关资源
      最近更新 更多