直接操作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。
我经常使用补丁来操作位图,通常是让每个补丁拥有一个 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。