我正在寻找一种使用颜色混合公式来计算第二种颜色的算法

问题描述 投票:0回答:1

好吧,我使用搜索找到了问题的答案,但是没有得到我想要的结果,所以我将在此处尝试提问:

如果我知道混合颜色的公式:

resultColorRGB = [round(firstColorR * alpha + secondColorR * (1 - alpha))], [round(firstColorG * alpha + secondColorG * (1 - alpha))], [round(firstColorB * alpha + secondColorB * (1 - alpha))]

其中alpha∈[0..1]

然后,如果我知道第一种颜色和结果的颜色,如何找到第二种颜色?

例如:round(35 * alpha + 255 *(1-alpha))= 204,round(alpha * 15 + 0 *(1- alpha))= 3,round(alpha * 0 + 153 *(1- alpha))= 118 ,alpha = 0.23

我不能使用求解线性方程组的方法,有两个原因(据我了解):alpha不是整数,并且通过舍入计算结果。

但是我敢肯定,有某种方法可以估计近似计算,而无需使用迭代。

algorithm colors calculation alphablending
1个回答
0
投票

如果所有值都是精确的,则方程式为aA +(1-a)B = C,其中A和B是您的两种输入颜色,a是alpha,C是输出颜色。 A,B和C分别是红色,绿色,蓝色的三倍,但这对数学没有影响。他们每个人都可以被独立对待。

如果您有A和C,并且alpha值为a,那么您就有B =(C-aA)/(1-a)。不精确的事实并不重要;您可以精确计算这些值,然后进行四舍五入。您无法准确地将B重新找回,因为原始混合中会丢失信息。

© www.soinside.com 2019 - 2024. All rights reserved.