レインボー、つまり全ての色を時間変化で表現したいのです。
今このような式で色が表現できるとします。
GetColor(R,G,B);
R,G,Bには0~255までの数値が入ります。
ループする処理の終わりに
Time++;
を書き、int型のTimeが時間変化の値とします。
つまり、黒から赤へ時間変化で表現するには
G=0; B=0;
GetColor(Time,G,B);
で表現できます。
赤、緑、青を時間変化で表現はできるのですが、全ての色を時間変化で表現したい時はどうしたらいいのでしょうか?
No.3ベストアンサー
- 回答日時:
#1です。
レインボーという意味はそういういみですか。
了解しました。だったら,レインボウは(R,G,B)の色空間のなかの一本の曲線として表現できます。
一番簡単なのは直線です。
なので,xをパラメータとして,
R=P*x+A,G=Q*x+B, B=R*x+C
として,xをR,G,Bの値が0から255に収まる範囲で
変化させてGetColorをよべばレインボウになります。
P,Q,R,A,B,Cといろいろかえることでいろんなレインボウができると思います。
直線以外でもよいので
R=X^2とかいろいろためしてみると面白いと思いますよ。
No.2
- 回答日時:
RGBのみの制御で行おうとすると条件分けが必要になります。
Color(Max,0,0) // 赤
Color(Max,Max,0) // 黄
Color(0,Max,0) // 緑
Color(0,Max,Max) // 水色
Color(0,0,Max) // 青
Color(Max,0,Max) // 紫
Color(Max,0,0) // 赤
の順番に増減分を制御してあげればレインボーは作れます。
しかし、これでは色相の変化は表現できても、彩度・明度の変化を表現しきれません。
なのでHSBからRGBに変換することをお勧めします。
参考URLを張っておきます。
参考URL:http://www13.plala.or.jp/kymats/study/gazou/HSB/ …
No.1
- 回答日時:
GetColor(TimeR,TimeG,TimeB);
としておいて3重ループをつくりそれぞれのループの先頭で0を入れるようにすれば,すべての組み合わせが表現できます。
あるいは24BITのバイナリ型の変数を用意して,
それ0からFFFFFFまでカウントアップして,それぞれの色用に,8bitずつ切り出してもよいと思います。
ありがとうございます。
確かにソウなんですよね!
全ての組み合わせをする事はできるんですけど
連続して表示した場合、
この方法だとforで255から0に飛んだとき
色が飛んでしまうんです。
突然色が変化してしまうんですね。
レインボーの色が段々かわるようにしたいのですが・><
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 微分方程式の物理現象への適用について 3 2023/05/14 12:22
- 英語 提示した名言の文の構造について(waste one hour of time) 5 2023/05/20 15:22
- 日本語 https://eprints.lib.hokudai.ac.jp/dspace/bitstream 6 2022/05/22 18:54
- 英語 提示した名言について(並列表現の文法規則) 4 2023/06/02 09:41
- Windows 10 Windows11タスクバーやエクスプローラー、スタートメニュー 動画全画面時にカーソルが見えない 1 2022/04/08 00:03
- 哲学 数理音楽学(2) 1 2023/07/07 14:17
- 英語 Rapid Market:ラピッドマーケット?(金融和訳) 3 2022/06/20 10:22
- 工学 半導体 光減衰法による少数キャリアのライフタイム測定で周波数を変えたときの検出波形(縦軸出力電圧、横 1 2023/05/16 19:15
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) TEXT関数(負の値)を集計のため数値に変換したい 5 2022/05/15 23:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どなたかこのプログラミングを...
-
プログラミングについて。 1つ...
-
電力自由化に今から乗るのは遅...
-
UWSCの終了の仕方
-
CやJAVa,Rubyなどプログラミン...
-
イベントの発生を待つ
-
GIFアニメをループさせたくない
-
ループを回すという意味は何で...
-
配列について
-
プログラミングの流れ図の問題...
-
隣接交換法のアルゴリズムについて
-
ループフリー
-
DOSコマンドのループ内のTIMEコ...
-
不安で苦しくて眠れない夜、ど...
-
forに出来てwhileに出来ないこ...
-
VBAでの一時停止と再開の方法
-
Javaでゲーム
-
null 参照の例外が実行時に発生...
-
OpenOffice.org3のマクロについ...
-
ハッシュ検索はなぜ速い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
-
GIFアニメをループさせたくない
-
Escキーを押すと、中断する時と...
-
DOSコマンドのループ内のTIMEコ...
-
CSVファイルの特定の行だけを読...
-
アクティブセルから、A列最終行...
-
vb.netからエクセル関数書き込み
-
範囲指定したセルを1つずつ飛...
-
テキストボックスの名前に変数...
-
乱数の桁数指定、または範囲指定。
-
「偶数・奇数の和」のフローチ...
-
vbscriptでIE自動入力(途中で...
おすすめ情報