我使用下面的POV循环来绘制其他颜色空间中的sRGB坐标。该环只沿外表面生成点,然后将它们与三角形连接起来。因为sRGB空间是一种扭曲的立方体,这意味着6个外面和8个顶点。
#macro cie_calc_gamut_xyz_srgb()
#for (i, 0, cie_sample_count_srgb)
#for (j, 0, cie_sample_count_srgb)
// side 0 & 3
#local cooRGB = <i/cie_sample_count_srgb,j/cie_sample_count_srgb,0>;
#local cooXYZ = cie_convRGB2XYZ(cooRGB);
#declare cie_point_array_srgb[0][i][j] = cooXYZ;
#local cooRGB = <i/cie_sample_count_srgb,j/cie_sample_count_srgb,1>;
#local cooXYZ = cie_convRGB2XYZ(cooRGB);
#declare cie_point_array_srgb[3][i][j] = cooXYZ;
// side 1 & 4
#local cooRGB = <i/cie_sample_count_srgb,0,j/cie_sample_count_srgb>;
#local cooXYZ = cie_convRGB2XYZ(cooRGB);
#declare cie_point_array_srgb[1][i][j] = cooXYZ;
#local cooRGB = <i/cie_sample_count_srgb,1,j/cie_sample_count_srgb>;
#local cooXYZ = cie_convRGB2XYZ(cooRGB);
#declare cie_point_array_srgb[4][i][j] = cooXYZ;
// side 2 & 5
#local cooRGB = <0,i/cie_sample_count_srgb,j/cie_sample_count_srgb>;
#local cooXYZ = cie_convRGB2XYZ(cooRGB);
#declare cie_point_array_srgb[2][i][j] = cooXYZ;
#local cooRGB = <1,i/cie_sample_count_srgb,j/cie_sample_count_srgb>;
#local cooXYZ = cie_convRGB2XYZ(cooRGB);
#declare cie_point_array_srgb[5][i][j] = cooXYZ;
#end
#end
#end这很好,因为几乎所有的颜色空间都是三维的。下面是输出的一个示例:

然而,我想做同样的CMYK颜色空间。我遇到的问题是,它有4个参数,而不是3个。同样,我只想在最外层绘制点,并将它们与三角形连接起来。我不认为由此产生的颜色固体是四维的,但我完全不知道如何进行。有人知道该怎么做吗?谢谢。
注意,XYZ是一个颜色空间。链接。
发布于 2017-11-08 17:59:50
这里的主要问题是,CMYK不是一个合适的颜色空间--它更像是一个打印过程,在坐标上有一个额外的自由度来映射,然后全部映射到可见颜色。使K与100% CMY不同的是在成像软件中无法模拟的着色剂的化学特性。(我试图在谷歌上找到一个关于CMYK不是颜色空间的很好的参考-试一试,你会发现有科学背景的文本倾向于将CMYK称为“颜色模型”)。
无论如何,有4个坐标渲染无效的大多数已知的处理颜色的成像算法,这是GIMP从来没有,也从来没有考虑过有一个内部CMYK颜色空间。(向这个空间输出是可以的,但不需要进行工作)。
总之,您应该做的是取一个固定的K值,并使用变化的CMY呈现您的多维数据集。重复额外的立方体,如果需要的话。
https://stackoverflow.com/questions/43131375
复制相似问题