In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

ChangeHSVtoRGB

HSVからRGBへの変換。
wonderflはASの備忘録として使って行きたいと思います。
変換式はwikiに載っていた物を使ってます。↓
http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93
Get Adobe Flash player
by snowsunny 23 May 2012
/**
 * 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;
            }
        }
    }
}