两层半透明图形即使使用相同的透明度,前后顺序不同也可能显示不同颜色。每层都混合自己与后面的结果,所以不能只把所有颜色简单相加。
本篇用一组独立输入把规则展开为可重复核对的记录。先确认单位、编号及边界,再自行尝试推演,然后寻找与下面过程第一次不同的位置。所有结果只在这里写明的规则下成立,不能当作所有游戏的统一实现。
使用零到一百的线性灰度单位,底层完全不透明。每覆盖一层,结果等于该层灰度乘透明度,加下方结果乘一减透明度;三层按给定顺序从下到上叠加,并与完全倒序比较。
不透明底层灰度23 [[[73, '1/2'], [64, '3/4'], [2, '1/4']], [[62, '1/2'], [59, '3/4'], [16, '1/2']], [[29, '1/4'], [81, '1/2'], [98, '3/4']], [[88, '3/4'], [61, '1/2'], [5, '1/2']], [[75, '1/2'], [74, '1/4'], [78, '3/4']], [[64, '3/4'], [97, '1/2'], [43, '3/4']], [[85, '1/4'], [91, '1/4'], [53, '1/2']], [[64, '3/4'], [83, '1/4'], [94, '3/4']], [[12, '1/2'], [90, '3/4'], [91, '3/4']]]
第1组从底向上图层[[73, '1/2'], [64, '3/4'], [2, '1/4']],逐层正序结果['48', '60', '91/2'],倒序结果['71/4', '839/16', '2007/32'],最终差-551/32。
第2组从底向上图层[[62, '1/2'], [59, '3/4'], [16, '1/2']],逐层正序结果['85/2', '439/8', '567/16'],倒序结果['39/2', '393/8', '889/16'],最终差-161/8。
第3组从底向上图层[[29, '1/4'], [81, '1/2'], [98, '3/4']],逐层正序结果['49/2', '211/4', '1387/16'],倒序结果['317/4', '641/8', '2155/32'],最终差619/32。
第4组从底向上图层[[88, '3/4'], [61, '1/2'], [5, '1/2']],逐层正序结果['287/4', '531/8', '571/16'],倒序结果['14', '75/2', '603/8'],最终差-635/16。
第5组从底向上图层[[75, '1/2'], [74, '1/4'], [78, '3/4']],逐层正序结果['49', '221/4', '1157/16'],倒序结果['257/4', '1067/16', '2267/32'],最终差47/32。
第6组从底向上图层[[64, '3/4'], [97, '1/2'], [43, '3/4']],逐层正序结果['215/4', '603/8', '1635/32'],倒序结果['38', '135/2', '519/8'],最终差-441/32。
第7组从底向上图层[[85, '1/4'], [91, '1/4'], [53, '1/2']],逐层正序结果['77/2', '413/8', '837/16'],倒序结果['38', '205/4', '955/16'],最终差-59/8。
第8组从底向上图层[[64, '3/4'], [83, '1/4'], [94, '3/4']],逐层正序结果['215/4', '977/16', '5489/64'],倒序结果['305/4', '1247/16', '4319/64'],最终差585/32。
第9组从底向上图层[[12, '1/2'], [90, '3/4'], [91, '3/4']],逐层正序结果['35/2', '575/8', '2759/32'],倒序结果['74', '86', '49'],最终差1191/32。
正序与倒序都由各自的覆盖顺序推导,灰度保持在零到一百范围内。
将三次混合展开为底层及各图层灰度的加权和;系数应非负且总和为一。独立计算这些最终权重,可核对逐层更新的结果及其为何受顺序影响。
灰度是本例的线性数值模型,不把真实图像编码值当作已经校正的亮度。其他混合模式、预乘表示或透明背景都需要另写公式。倒序结果有时恰好相同,并不证明一般情况下层序无关。
练习时先保存原始输入及中间结果,再只改变一个条件观察差异。重点检查空状态、相同数值、恰好到达边界和最后一步。不要为了凑出相同的最终结果而忽略较早出现的偏差,过程和结论都应能由同一套规则解释。