我正在尝试将 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