colset = self._shade_colors(color, normals)
虽然理论上一个平面的法线都是相同的,但实际上
由于
浮点运算。这些微小的变化被放大了
normalization因为这个{a3}位于0和1之间。在
因此,所有完全平面的曲面都容易出现这种着色缺陷。在
当颜色是统一的(例如color='b')并且法线都相同(原样
对于一个平面),每个面的着色应该是相同的。规格化应使着色为零。所以对于一个平面,阴影不应该
完全改变颜色。在
因此,要解决此错误,请使用shade=False关闭着色:
^{pr2}$
如果您想查看规范化出错的确切位置,请在上面的代码中将shade=False更改为{},然后将这些print语句放入安装的^{}:resdat = result.data
resdat -= vmin
print(resdat[0, :10])
resdat /= (vmax - vmin)
print(resdat[0, :10])
result = np.ma.array(resdat, mask=result.mask, copy=False)
运行上面的脚本然后打印[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
0.00000000e+00 0.00000000e+00 2.22044605e-16 0.00000000e+00
0.00000000e+00 2.22044605e-16]
[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 1.]
如果resdat是一致常量,resdat中的所有值在规范化后都将为零。相反,resdat中的微小错误被放大为等于1。这导致了你在蓝色表面看到的有趣的阴影。在