此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.1)

2.9.17 高级专题:彩色输出

不同输出设备上的颜色指定

产生图形输出时,对不同设备的自然色有不同的设计. 有些设备可以自动 从一种颜色转变为另一种颜色,Mathematica 也提供了直接对一个设备 指定颜色的指令.

Mathematica中的颜色指令

Mathematica 中的每个颜色指令定义一个用于输出设备的 PostScript 代码颜色指令. 例如,RGBColor 指令在 PostScript 代码中产生 setrgbcolor. PostScript 颜色指令的最后处理由输出设备和所有的 PostScript 编译器决定.
但在大部分情况下,Mathematica 的颜色指令所给出的参数可直接用来设置 颜色输出分量的强度和密度.此时要知道Mathematica 颜色指令中的参数在不同的输出 设备上会产生不同的彩色. 例如,红, 绿, 蓝分量的实际强度即使在设置 相同时也随颜色显示设备的不同而变化.亮度和对比度也是随颜色显示设 备的不同发生变化.
另外,与所能观察到的色域相比,通过调节参数在一个输出设备上所产生的 色域要小些. 即使我们所观察到的颜色空间能用三个参数来表示,用几个固定色的组 合也不可能构成整个色域.
不同类型的输出设备选用不同的基本色,用发射光和发散光工作的彩色 显示器一般选红, 绿, 蓝做基本色,而用反射光工作的彩色打印机一般选 青, 品, 黄和黑做基本色. 打印彩色图时用 4 条通道,每次打印这些基本颜色之一.
于是在颜色显色器中自然设置 RGBColorHue 而在彩色打印机中自然用 CMYKColor.
系统的默认设置是直接使用所指定的颜色. 选项 ColorOutput 可以让 Mathematica 将所指定的颜色转换为适用于不同类型输出设备的颜色.

颜色输出转换

彩色输出中最复杂的问题就是颜色的分解,这在打印机上用青, 品, 黄和黑 四种颜色去表示由红, 绿和蓝三原色组成的颜色时是必须进行的. Mathematica 有一个内部算法去进行这种转换,该算法的基础是典型显示器 颜色的近似和四色打印墨的标准设置. 打印墨的颜色不是典型显示器颜色的 补充,而是一个非线性的变换.
Mathematica 有各种颜色的功能,还可以用 ColorOutput-> 定义颜色转换, 在这种设置下,Mathematica 就在所产生的各种颜色指令中自动调用函数  .
上面给出的指令可以用来设置图形对象,Mathematica 中的模拟亮度计算总 是用 RGBColor,所以当使用模拟亮度时所有颜色就被自动转化为这一形式.

这里对 RGBColor 对象定义一个变换,它分离出红色分量并对它进行平方

这里指定红色对任何确定的 GrayLevel 平方

这里画出的是红色分量平方后的图形,而不是按通常从彩色变换到黑白的图形

使用自定义 ColorOutput 变换时,应该指出该变换怎样作用于正在产生图像 时出现的每一个颜色指令上. 对于模拟亮度阴影的三维图形,至少要为 RGBColorGrayLevel 指定变换.