我正在使用以下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是一种颜色空间。链接。