Netlogo 导出世界格式
Netlogo export-world format
我一直在尝试弄清楚导出世界是如何工作的,特别是绘图部分是如何工作的。
我创建了以下代码来使用 max-pxcor 和 max-pycor 的默认环境大小 16 进行实验。如果您 运行 此代码末尾显示 post,每个生成的文件将是 5 兆字节,因此 运行 宁一分钟后很容易用完超过 1 GB 的数据。
无论如何,我的问题是:绘图部分是如何工作的?我看到第一个条目是 -16.4、16.4。我在下面的简单 table 中总结了我的一些观察结果。第一列是海龟移动了多少,而第二列显示了 CSV 文件中的部分输出。
0.001 FF1D9F78
0.016 FF1D9F78FF1D9F78
0.093 FF1D9F78FF1D9F78FF1D9F78
我还看到第一个条目是在乌龟移动 0 时创建的。001.The第二个条目似乎是在乌龟移动 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
绘图层只是一个位图——一个像素网格。它不知道海龟移动了什么以及移动了多远,它只知道海龟在移动时着色了哪些像素。在内部,它是 java.awt.image.BufferedImage
和 TYPE_INT_ARGB
编码。
它通过以下代码写入导出的世界文件:
其中 colors
是支持 BufferedImage 的整数数组,toHexString
只是将字节写入十六进制数字 (code)。
如果您的图像大部分是黑色的,您将在文件中看到一堆 00
字节。
至于你的非零字节,在我看来 FF1D9F78 是一个像素,alpha = FF(不透明),红色 = 29,绿色 = 159,蓝色 = 120。至少,我认为这是正确的解释?对于您在屏幕上看到的内容,这是否合理?也许 A-R-G-B 字节的顺序是相反的?要仔细检查它,我需要执行 export-view
然后在一个程序中查看生成的 PNG 文件,该程序可以告诉我各个像素的 RGB 值——我现在手头没有这样的程序.但希望这会让您走上正轨。
我一直在尝试弄清楚导出世界是如何工作的,特别是绘图部分是如何工作的。
我创建了以下代码来使用 max-pxcor 和 max-pycor 的默认环境大小 16 进行实验。如果您 运行 此代码末尾显示 post,每个生成的文件将是 5 兆字节,因此 运行 宁一分钟后很容易用完超过 1 GB 的数据。
无论如何,我的问题是:绘图部分是如何工作的?我看到第一个条目是 -16.4、16.4。我在下面的简单 table 中总结了我的一些观察结果。第一列是海龟移动了多少,而第二列显示了 CSV 文件中的部分输出。
0.001 FF1D9F78
0.016 FF1D9F78FF1D9F78
0.093 FF1D9F78FF1D9F78FF1D9F78
我还看到第一个条目是在乌龟移动 0 时创建的。001.The第二个条目似乎是在乌龟移动 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
绘图层只是一个位图——一个像素网格。它不知道海龟移动了什么以及移动了多远,它只知道海龟在移动时着色了哪些像素。在内部,它是 java.awt.image.BufferedImage
和 TYPE_INT_ARGB
编码。
它通过以下代码写入导出的世界文件:
其中 colors
是支持 BufferedImage 的整数数组,toHexString
只是将字节写入十六进制数字 (code)。
如果您的图像大部分是黑色的,您将在文件中看到一堆 00
字节。
至于你的非零字节,在我看来 FF1D9F78 是一个像素,alpha = FF(不透明),红色 = 29,绿色 = 159,蓝色 = 120。至少,我认为这是正确的解释?对于您在屏幕上看到的内容,这是否合理?也许 A-R-G-B 字节的顺序是相反的?要仔细检查它,我需要执行 export-view
然后在一个程序中查看生成的 PNG 文件,该程序可以告诉我各个像素的 RGB 值——我现在手头没有这样的程序.但希望这会让您走上正轨。