当I found表示Mathematica为以下代码提供True
时,我感到很惊讶(在具有Mathematica 8.0.1的32位Windows XP上):
Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] ===
Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]]
Mathematica渲染并输出为不同颜色的RGB颜色值的最小差异是什么?是否依赖于机器?
最佳答案
我相信此行为与计算机有关,但是我不知道它与操作系统的关系如何。在我的机器上,仅当分母为True
时,它才评估为511
。
n = 257;
While[(Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] ===
Rasterize[Graphics[{RGBColor[0, 0, 1/n], Disk[]}]]) != True,
n++];
Print@n
Out[1]=511
n<511
的两个图像之间存在差异p1 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]];
p2 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]];
ArrayPlot[p1 - p2]
这种差异在
n=510
一直都是恒定的,等于1/255
。Max[p2 - p1] === N[1/255]
Out[1]=True