0
vを虹色に赤から紫にマップする関数が必要です。正確には言った:0は赤紫色であるべきであるVε[0、A]と虹色のカラーマップへのマップ値の範囲
(rRB,gRB,bRB) = mapping_fct(v)
。
既存のものはありますか(これまでに何も見つかりませんでした)? 私はC++でコーディングしています
vを虹色に赤から紫にマップする関数が必要です。正確には言った:0は赤紫色であるべきであるVε[0、A]と虹色のカラーマップへのマップ値の範囲
(rRB,gRB,bRB) = mapping_fct(v)
。
既存のものはありますか(これまでに何も見つかりませんでした)? 私はC++でコーディングしています
この関数を試してください。この関数は線形補間を行い、赤色→緑色→青色→赤色にラップアラウンドします。 npは最大値(a)、pは入力値(v)です。 pが常にnpより小さくなるように、npを少し増やして紫色に止まるようにすることができます。
void getcolor(int p, int np, float&r, float&g, float&b) {
float inc = 6.0/np;
float x = p * inc;
r = 0.0f; g = 0.0f; b = 0.0f;
if ((0 <= x && x <= 1) || (5 <= x && x <= 6)) r = 1.0f;
else if (4 <= x && x <= 5) r = x - 4;
else if (1 <= x && x <= 2) r = 1.0f - (x - 1);
if (1 <= x && x <= 3) g = 1.0f;
else if (0 <= x && x <= 1) g = x - 0;
else if (3 <= x && x <= 4) g = 1.0f - (x - 3);
if (3 <= x && x <= 5) b = 1.0f;
else if (2 <= x && x <= 3) b = x - 2;
else if (5 <= x && x <= 6) b = 1.0f - (x - 5);
}
使用例:
float r,g,b;
getcolor(545, 1024, r, g, b);
ありがとうございます!これは私が探していたものです! – Christoph
mapping_fctは何ですか? – Garf365
mapping_fctの入力は何ですか?列挙型または単純な整数? –
連続スペクトルが必要な場合、[a]は実際には赤にマップされ、折り返されます。 0 =赤、a * 1/3 =緑、a * 2/3 =青、a =赤 –