ChangeHSVtoRGB
HSVからRGBへの変換。
wonderflはASの備忘録として使って行きたいと思います。
変換式はwikiに載っていた物を使ってます。↓
http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93
/**
* Copyright snowsunny ( http://wonderfl.net/user/snowsunny )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/lnaS
*/
package
{
import flash.text.TextField;
import flash.display.Sprite;
public class HSVtoRGB extends Sprite
{
public function HSVtoRGB() {
var Hue:Number = 180;
var TF:TextField = new TextField;
TF.textColor = ChangeHSVtoRGB(Hue);
TF.text = "ChangeHSVtoRGB";
TF.appendText("\nHSV : " + Hue + ", 1, 1");
TF.appendText("\nRGB : " + TF.textColor.toString(16));
addChild(TF);
//HSVをRGBに変換する関数(変換式はwikiに載っていた物を使ってます)
//http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93
function ChangeHSVtoRGB(H:Number, S:Number=1, V:Number=1):uint
{
//変換したRGBを入れる変数を作成
var RGB:uint;
//Sが0の時、Hは不必要となるのでVのみでRGBを設定する
if(S == 0)
{
//RGBにビットをシフトしながら値を格納
RGB = V * 255 << 16 | V * 255 << 8 | V * 255;
}
else
{
//変換に必要な変数を作成・設定
var Hi:Number = Math.floor(H / 60) % 6;
var f:Number = (H / 60 - Hi);
var p:Number = V * (1 - S);
var q:Number = V * (1 - f * S);
var t:Number = V * (1 - (1 - f) * S);
//HiによってRGBに格納する値を変更↓
//RGBにビットをシフトしながら値を格納
switch(Hi)
{
case 0:
RGB = V * 255 << 16 | t * 255 << 8 | p * 255 ;
break;
case 1:
RGB = q * 255 << 16 | V * 255 << 8 | p * 255 ;
break;
case 2:
RGB = p * 255 << 16 | V * 255 << 8 | t * 255 ;
break;
case 3:
RGB = p * 255 << 16 | q * 255 << 8 | V * 255 ;
break;
case 4:
RGB = t * 255 << 16 | p * 255 << 8 | V * 255 ;
break;
case 5:
RGB = V * 255 << 16 | p * 255 << 8 | q * 255 ;
break;
}
}
return RGB;
}
}
}
}