如果我在正方形的四个角落上有四种颜色(A,B,C和D),我想用渐变填充该正方形,使得四种颜色之间混合得很好,那么如何计算点E的颜色?
点E离其他任何一个点越近,该颜色就应该更强烈地影响结果。
有什么想法吗?速度和简单性比准确性更重要。
如果我在正方形的四个角落上有四种颜色(A,B,C和D),我想用渐变填充该正方形,使得四种颜色之间混合得很好,那么如何计算点E的颜色?
点E离其他任何一个点越近,该颜色就应该更强烈地影响结果。
有什么想法吗?速度和简单性比准确性更重要。
因此,如果a
是您的正方形大小,您的点的坐标为A(0
,0
),B(0
,a
),C(a
,0
),D(a
,a
),那么点E(x
,y
)的色调可以通过以下方式计算:
Hue(E) = ( Hue(B)*y/a + Hue(A)*(1-y/a) ) * (x/a) + ( Hue(D)*y/a + Hue(C)*(1-y/a) ) * (1-x/a)
其中Hue(A)
是点A的色调,Hue(B)
是点B的色调,以此类推...
对于饱和度和明度,您可以应用相同的公式。
一旦您获得了点E的色调/饱和度/明度,您就可以将其转换为RGB空间。
点E的颜色将是红/绿/蓝的组合。计算每个颜色轴作为A、B、C、D相同颜色轴的平均值,按距离加权。
distance_a = sqrt((xa-xe)^2+(ya-ye)^2)
distance_b = ....
sum_distances = distance_a + distance_b ...
red = (red_adistance_a + red_bdistance_b ... ) / sum_distances
color_E = ColorFromARgb(red,green,blue)