A browser implementation of the classic Farnsworth Panel D-15: arrange 15 equal-lightness caps into a smooth hue sequence, then get a CIE u′v′ polar hue-trace plot, Total Error Score, confusion index and protan/deutan/tritan classification. Runs entirely locally.
① 色帽生成:取 D-15 的 15 个色度点 (x, y),在固定亮度 Y 下换算 XYZ = (Y/y·x, Y, Y/y·(1−x−y)),再经 sRGB 逆矩阵得线性 RGB;越界的点沿「向同亮度中性灰收敛」的方向做二分法压缩到色域内,因此 15 个色帽明度一致、只有色相与饱和度差异——这正是排列测试能屏蔽明暗线索的关键(可勾选「灰度预览」自行验证)。
② 色差度量:把每个色帽转到 CIE 1976 u′v′ 均匀色度图,u′ = 4x/(−2x+12y+3)、v′ = 9y/(−2x+12y+3)。相邻两帽的色度距离 √(Δu′²+Δv′²)×100 即一步色差;把 14 步累加得总误差分 TES。理想顺序的 TES 记为基准,混淆指数 C = TES(你的排列) / TES(理想排列),完美排列 C = 1.00。
③ 轴向分析:只取「相邻两帽编号不连续」的错位跳跃作为误差向量,计算二阶矩 Sxx、Syy、Sxy,主轴方向 θ = ½·arctan2(2Sxy, Sxx−Syy),主/次特征值之比开方得选择性指数 S。S 越大说明错误越集中在一条直线上(二色视特征),S≈1 说明错误是随机的。
④ 分型:三条混淆线由二色视共轭点(copunctal point)确定——红色盲 (0.747, 0.253)、绿色盲 (1.400, −0.400)、蓝色盲 (0.171, 0.000)。把它们和 D65 白点连线投到 u′v′ 得到三个参考轴向角,θ 与哪一条最接近就归为哪一型,严重度由 C 的大小分级。
把中间 13 个色帽按颜色渐变最平滑的顺序排列:让每一个色帽都和左右邻居颜色最接近。两端带紫色圈的是固定基准帽,不能移动。桌面端可直接拖拽色帽;移动端点一下选中、再点另一个即可换位,也可以用色帽下方的 ◀ ▶ 按钮微调,键盘用户可用 Tab 聚焦后按 ← → 移动。