トップページ > 過去ログ > 記事閲覧
GetColorHSVが欲しい
名前:frost 日時: 2010/06/21 14:37

タイトル通りです。

Page: 1 |

Re: GetColorHSVが欲しい ( No.1 )
名前:管理人 日時:2010/06/24 01:52

ご要望ありがとうございます 実装に悩みましたのでとりあえずDXライブラリの関数として追加するのは見合わせることにしました 代わりに普通の関数として用意しましたので、下記の関数をコピー&ペーストしてお使いください m(_ _)m // H : 色相 有効範囲 0.0f 〜 360.0f // S : 彩度 有効範囲 0.0f 〜 1.0f // V : 明度 有効範囲 0.0f 〜 1.0f int GetColorHSV( float H, float S, float V ) { int hi ; float f, p, q, t ; float r, g, b ; int ir, ig, ib ; hi = ( int )( H / 60.0f ) ; hi = hi == 6 ? 5 : hi %= 6 ; f = H / 60.0f - ( float )hi ; p = V * ( 1.0f - S ) ; q = V * ( 1.0f - f * S ) ; t = V * ( 1.0f - ( 1.0f - f ) * S ) ; switch( hi ) { case 0 : r = V ; g = t ; b = p ; break ; case 1 : r = q ; g = V ; b = p ; break ; case 2 : r = p ; g = V ; b = t ; break ; case 3 : r = p ; g = q ; b = V ; break ; case 4 : r = t ; g = p ; b = V ; break ; case 5 : r = V ; g = p ; b = q ; break ; } ir = ( int )( r * 255.0f ) ; if( ir > 255 ) ir = 255 ; else if( ir < 0 ) ir = 0 ; ig = ( int )( g * 255.0f ) ; if( ig > 255 ) ig = 255 ; else if( ig < 0 ) ig = 0 ; ib = ( int )( b * 255.0f ) ; if( ib > 255 ) ib = 255 ; else if( ib < 0 ) ib = 0 ; return GetColor( ir, ig, ib ) ; }
Re: GetColorHSVが欲しい ( No.2 )
名前:お絵かきソフト開発に疲れた人 日時:2010/06/30 21:44

HSVでもPaint.NetとかWikiのHSVとRGBA変換の方式が違いますね。明確な基準はないのかもしれません。現状はソフトウェアごとの仕様になるので、DXライブラリにあってもいいような気もします。
Re: GetColorHSVが欲しい ( No.3 )
名前:管理人 日時:2010/07/03 23:46

ご意見ありがとうございます なるべく既存の機能の組み合わせて実現できる機能はライブラリ内部に入れないようにしたいというのがあるので、 今回のように「内部に持たなくても実装は可能だけどライブラリの関数として在っても良さそう」な機能はライブラリ内部に 入れるべきかどうか悩みます HSV←→RGB の変換方式が1種類ではないというのは初めて知りました( というかHSV←→RGB変換のことも こちらのスレッドを拝見してから初めて調べたくらいですが ) 1種類ではないとなると、益々ライブラリ側で変換方式を固定しない方が良いような・・・

Page: 1 |