在我使用方程式扩展这个问题之前,是否有人看到或以Java/c/c/c/c ++/c#?
的语言解决了此问题。 我当前的方法是采用三联插值(RYB至RGB)的前方方程,扩展和重新排列,以提供3个同时的方程,以适用于3个未知数(参数权重:S,T和U),然后使用Newton-Raphson方法来弄清楚如何找到根。我要以正确的方式去做吗?插入三线性插值的方程式: wikipedia编辑:wikipedia修订时
缩放到最后一个方程式,扩展并收集以下方程式: XD,YD,ZD,XDYD,XDZD,YDZD,ZDYDZD和CONSTAND。然后在XD,YD和ZD的每个三个维度中的每个维度中找到方程的部分分化。使用这些新方程式填充(3x3)Jacobian矩阵,然后使用Newton的方法在软件中求解。 newton-raphson方法
I发现了基于立方花纹的RYB-> RGB转换的JavaScript实现。这是我的lua端口(所有值在0-1间隔):
local ryb2rgb = function( R, Y, B )
local R, Y, B = R*R*(3-R-R), Y*Y*(3-Y-Y), B*B*(3-B-B)
return 1.0 + B * ( R * (0.337 + Y * -0.137) + (-0.837 + Y * -0.163) ),
1.0 + B * ( -0.627 + Y * 0.287) + R * (-1.0 + Y * (0.5 + B * -0.693) - B * (-0.627) ),
1.0 + B * (-0.4 + Y * 0.6) - Y + R * ( -1.0 + B * (0.9 + Y * -1.1) + Y )
end