Help us understand the problem. What is going on with this article?

【C++】ランダムな色相の虹を合成

More than 5 years have passed since last update.

C++で彩度が均一でランダムな色相の虹のようなものを作り出そうとしたのですが、意外と工夫が必要でした。
やり方を共有しておきます。
Photoshopなどで確認してみると、彩度がmaxの色は、
1.rgbのうち一つの要素が255で
2.他の二つのうち一つの要素が0で
3.残りの一つの要素が0 ~ 255の間の値
という条件を満たしているようです。
上記の要件を満たすようなrgbの値をランダムに生成します。

    // 虹色ランダムの合成
    int color_elem[3];
    color_elem[0] = 255;
    color_elem[1] = rand() % 256;
    color_elem[2] = 0;
    int color_r_index = rand() % 3;
    int r_bin = rand() % 2;
    int color_g_index = (color_r_index + 1 +  r_bin) % 3;
    int color_b_index = (color_r_index + 1 + !r_bin) % 3;
    // openFrameworksの色構造体に色を格納
    // color.set(red, green, blue);で色を作成できる
    ofColor color;
    color.set(color_elem[color_r_index], color_elem[color_g_index], color_elem[color_b_index]);

彩度を調節するためには、

    color_elem[1] = rand() % 256;

のところを

    color_elem[1] = rand() % (256 - BIUS) + BIUS;
    // 0 < BIUS <= 256

のようにすると良さそうです。

スクリーンショット 2014-01-17 10.13.57.png

ヨッシャ!イイカンジ!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away