在“计算机中的颜色VII——快速计算纯色的偏转”中介绍了纯色的偏转。
本文对上文的公式进行扩展,扩展到任意的颜色。
颜色(R,G,B)偏转ω后,如何计算偏转颜色(R’,G’,B’)
具体的推导过程不详述了,和前文类似。下面介绍计算过程:
令MAX为R、G、B三个分量的最大值,MIN为R、G、B三个分量的最小值
若MAX=MIN,则颜色为灰度色,无论怎么偏转,还是原来的颜色。
R’=R;G’=G;B’=B
若MAX≠MIN,令ρ=MAX-MIN
当G<B时,ω=-ω
ω’=ω/60×ρ
λ’=MAX-R+G-MIN+B-MIN+ω’
当λ’<0时,令λ’’=-λ’
当λ’>3ρ时,令λ’’=6ρ-λ’
否则λ’’=λ’
偏转纯色的分量
R’=2ρ-λ’’;若R’<0,则R’=0;若R’>ρ,则R’=ρ;
G’=λ’’;若G’>ρ,则G’=ρ;
B’=λ’’-2ρ;若B’<0;则B’=0;
若(G<B)XOR(λ’<0或λ’>3ρ)=True时,交换G’,B’分量的值
最后
R’=R’+MIN
G’=G’+MIN
B’=B’+MIN
(120,44,20)顺时针偏转133得到什么颜色呢?答案是(20,120,66)
(120,44,20)逆时针偏转133得到什么颜色呢?答案是(22,20,120)