Ответ: Математическое решение сложения пигментов
Спасибо за ссылки , конечно , но эти саиты уже прошарены давно , вот для примера макрос по переводу лаб в ргб , или наоборот , написанный с использованием формул с саита
Function LAB2RGB(rg)
Dim lab, rgb, i As Byte, Y As Single
lab = GetRg2Arr(rg)
Y = (lab(1, 1) + 16) / 116: lab(1, 1) = lab(1, 2) / 500 + Y: lab(1, 3) = Y - lab(1, 3) / 200: lab(1, 2) = Y
For i = 1 To 3
If lab(1, i) ^ 3 > 0.008856 Then lab(1, i) = lab(1, i) ^ 3 Else lab(1, i) = (lab(1, i) - 16 / 116) / 7.787
Next
For i = 1 To 3: lab(1, i) = lab(1, i) * k(i): Next ' XYZ ready
For i = 1 To 3: lab(1, i) = lab(1, i) / 100: Next
rgb = lab
rgb(1, 1) = 3.2406 * lab(1, 1) - 1.5372 * lab(1, 2) - 0.4986 * lab(1, 3)
rgb(1, 2) = -0.9689 * lab(1, 1) + 1.8758 * lab(1, 2) + 0.0415 * lab(1, 3)
rgb(1, 3) = 0.0557 * lab(1, 1) - 0.204 * lab(1, 2) + 1.057 * lab(1, 3)
For i = 1 To 3
If rgb(1, i) > 0.0031308 Then rgb(1, i) = 1.055 * rgb(1, i) ^ (1 / 2.4) - 0.055 Else rgb(1, i) = 12.92 * rgb(1, i)
rgb(1, i) = rgb(1, i) * 255
Next
LAB2RGB = rgb
End Function
Function RGB2Lab(rg)
Dim lab, rgb, i As Byte, Y As Single
rgb = GetRg2Arr(rg)
For i = 1 To 3
rgb(1, i) = rgb(1, i) / 255
If rgb(1, i) > 0.04045 Then rgb(1, i) = ((rgb(1, i) + 0.055) / 1.055) ^ 2.4 Else rgb(1, i) = rgb(1, i) / 12.92
rgb(1, i) = rgb(1, i) * 100
Next
lab = rgb
lab(1, 1) = 0.4124 * rgb(1, 1) + 0.3576 * rgb(1, 2) + 0.1805 * rgb(1, 3)
lab(1, 2) = 0.2126 * rgb(1, 1) + 0.7152 * rgb(1, 2) + 0.0722 * rgb(1, 3)
lab(1, 3) = 0.0193 * rgb(1, 1) + 0.1192 * rgb(1, 2) + 0.9505 * rgb(1, 3) ' XYZ ready
For i = 1 To 3
lab(1, i) = lab(1, i) / k(i)
If lab(1, i) > 0.008856 Then lab(1, i) = lab(1, i) ^ (1 / 3) Else lab(1, i) = 7.787 * lab(1, i) + 16 / 116
Next
Y = lab(1, 2)
lab(1, 2) = 500 * (lab(1, 1) - Y)
lab(1, 3) = 200 * (Y - lab(1, 3))
lab(1, 1) = (116 * Y) - 16
RGB2Lab = lab
End Function
может кому пригодится .
Вопрос то стоит не в переводе , а в принципе сложения , чтобы обьяснить экселю в какои последовательности считать цвет , основнои вопрос в данном случае - яркость металлика , его блик , L которого больше 100 , что и как правильно делать с данным значением , как его привести к общему знаменателю со светлотои солидных пигментов , вот это подскажите . Откуда вообще берется значение яркости и как оно считается измеряется и переводится в L , как это значение можно сравнить со светлотои ? И что делать с отрицательными значениями ргб , как их считать , учитывать или нет ?