我正在尝试将 rgb 转换为 as3 中的 hsv。除了白色(255,255,255)外,我的功能似乎很好用
这是我的功能:
        public function RgbToHsv(red:Number, grn:Number, blu:Number):Object
    {
        var x, val, f, i, hue, sat, val;
        red/=255;
        grn/=255;
        blu/=255;
        x = Math.min(Math.min(red, grn), blu);
        val = Math.max(Math.max(red, grn), blu);
        if (x==val){
            return({h:undefined, s:0, v:val*100});
        }
        f = (red == x) ? grn-blu : ((grn == x) ? blu-red : red-grn);
        i = (red == x) ? 3 : ((grn == x) ? 5 : 1);
        hue = Math.floor((i-f/(val-x))*60)%360;
        sat = Math.floor(((val-x)/val)*100);
        val = Math.floor(val*100);
        return({h:hue, s:sat, v:val});
    }       
问题是当我通过白色 rgb (255,255,255) 我得到这个:h:null,s:0,v:100