我正在使用以下 POV-Ray 循环在其他颜色空间中绘制 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 是一个色彩空间。链接。