zoukankan      html  css  js  c++  java
  • 计算机中的颜色V——快速计算颜色的色相值

      在之前的文章中,给定一个颜色,它的色相值计算如下:

     

      由公式可知,计算色相时要分为六种情况,计算略显复杂。有没有简单的计算方法呢?来看看下面这个图

     

      上面这个图,表示纯色的色相分布,把纯色分为六个部分。仔细观察,每个部分的纯色都有统一的特点,例如,右上角的部分,R=255,B=0,G从0变化到255。右边的部分,G=255,B=0,R从255变化到0。每一个部分都是一个分量是255,一个分量是0,一个分量在0到255之间变化。

      在仔细观察以后,突然发现,任意一种纯色(R,G,B)和红色之间的夹角可以用下面公式表示:

        Θ=(|R-255|+|G-0|+|B-0|)/255×60

      去掉绝对值符号后,简化为

        Θ=(255-R+G+B)/255×60

      这时,Θ的取值范围为 [0,180]。

        再次观察上面这个图,发现右边三个阴影部分的纯色都有一个共性,那就是分量G的值大于等于分量B的值,而左边三个空白部分的纯色也都有一个共性,就是分量B的值大于等于分量G的值。

      故任意一个纯色的色相值可以用下面公式表示

        当G≥B时,H=(255-R+G+B)/255×60

        当G<B时,H=360-(255-R+G+B)/255×60

      通过演化推导,任意一种颜色(R’,G’,B’)的色相计算公式:

        Max为三个分量的最大值,Min为三个分量的最小值

        若Max=Min,表示灰度色,此时,H=0

        若Max≠Min,分为两种情况:

        当G≥B时,H=(Max-R’+G’-Min+B’-Min)/(Max-Min)×60

        当G<B时,H=360-(Max-R’+G’-Min+B’-Min)/(Max-Min)×60

      注:补充两个公式,在后文中要用到的

        纯色(R,G,B),和红色的夹角

        Θ=(255-R+G+B)/255×60

        和绿色的夹角

        Θ=(255+R-G+B)/255×60

        和蓝色的夹角

        Θ=(255+R+G-B)/255×60

    作者:万仓一黍
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    点击表单提交 却打开了另存为对话框
    js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
    html怎么隐藏input标签
    莫名其妙地改变了数组的值,原来是……
    addEventListener 用法
    JavaScript DOM元素常见操作详解【添加、删除、修改等】
    MySQL用户权限验证与管理方法详解
    mysql如何修改root用户的密码
    python案例
    IDEA启动报 Error:java: JDK isn't specified for module 'xxx' 已解决
  • 原文地址:https://www.cnblogs.com/grenet/p/1623796.html
Copyright © 2011-2022 走看看