as3でrgbを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