计算机中的颜色VIII——快速计算颜色的偏转

  在“计算机中的颜色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)

上一篇:遍历排列的实现——VB2005


下一篇:计算字符串的相似度(VB2005)