直接操作netlogo pcolor RGB是不是效率更高?

Is it more efficient to manipulate netlogo pcolor RGB directly?

我经常使用补丁来操作位图,通常是让每个补丁拥有一个 R、G 和一个 B,就像这样

 patches-own [R G B]

并使用

 ask patches [set pcolor rgb R G B]

显示。这里的问题是我有效地将每个变量存储了两次。一次在补丁 R G 和 B 中,一次在每个补丁的 Pcolor 中。我使用非常大的数组,所以欢迎任何效率。

我想开始只使用没有额外变量的 Pcolor,但担心存储的 rgb pcolor 列表与常规 pcolor 一样不精确。我还担心我将不得不使用访问 Pcolor 列表的诡计会使事情陷入困境。

即是

set pcolor pcolor replace-item 1 100

优于

set b 100
set pcolor rgb 0 100 0

?

首先,变量使用的内存几乎可以忽略不计,除非你有大量的补丁,在那种情况下,你可能会遇到更大的问题。

也就是说,当您执行 set pcolor rgb 0 100 0 时,您实际上只是将 pcolor 设置到列表 [0 100 0]。数字没有精度损失:

> ask patch 0 0 [ set pcolor [0.123 45.678 99] show pcolor ]
(patch 0 0): [0.123 45.678 99]

唯一的例外是分量大于 255 或小于 0。