正方形の四隅に4つの色(A、B、C、D)があり、その正方形を4つの色の間でうまく調和するグラデーションで塗りつぶしたい場合、点Eの色をどのように計算しますか?
Eが他のポイントに近いほど、その色が結果に影響を与えるはずです。
それを行う方法はありますか?精度よりもスピードとシンプルさが優先されます。
正方形の四隅に4つの色(A、B、C、D)があり、その正方形を4つの色の間でうまく調和するグラデーションで塗りつぶしたい場合、点Eの色をどのように計算しますか?
Eが他のポイントに近いほど、その色が結果に影響を与えるはずです。
それを行う方法はありますか?精度よりもスピードとシンプルさが優先されます。
2つの色の間にグラデーションが必要な場合の最善の解決策は、HSV表現(色相飽和値)を使用することです。
2つの色のHSV値がある場合は、H、S、およびVの線形補間を行うだけで、良い色になります(RGB空間での補間は、常に「悪い」結果につながります)。
ここには、それぞれRGBからHSVおよびHSVからRGBに移行する式もあります。
ここで、4つのコーナーの問題について、Eからその4つのポイントA、B、C、およびDまでの距離で重み付けされた4つのH / S/V値の線形結合を作成できます。
編集:tekBluesと同じ方法ですが、HSV空間でテストします(RGBおよびHSV空間でテストするのは非常に簡単です。違いがわかります。HSVでは、クロマチックシリンダーを回転させるだけで、次のようになります。良い結果)
EDIT2:「スピードとシンプルさ」を好む場合は、L2ノルム(ユークリッドノルム)の代わりにL1ノルムを使用できます。
したがって、a
が正方形のサイズであり、点の座標がA(0
、0
)、B(0
、a
)、C(a
、0
)、D(a
、a
)である場合、点の色相E(x
、y
)は次のように計算できます。 :
Hue(E) = ( Hue(B)*y/a + Hue(A)*(1-y/a) ) * (x/a) + ( Hue(D)*y/a + Hue(C)*(1-y/a) ) * (1-x/a)
Hue(A)
ポイントAHue(B)
の色相、Bの色相などはどこにありますか。
彩度と値に同じ式を適用します。
ポイントEの色相/彩度/値を取得したら、RGB空間で変換できます。
このサイトをチェックしてください。このサイトでは、「HSVのグラデーションがより満足できる」という@ThibThibのコメントのビジュアルデモを提供しています。
http://www.perbang.dk/rgbgradient/
これは、RGBグラデーションとHSVグラデーションの両方を作成して表示するグラデーションクリエーターです。
FFAAAAからAAFFAA(明るい赤から緑)への9つのステップを試してみると、明るい黄色への移行がうまくいき、HSVとRGBの移行は似ています。
しかし、FF0000から00FF00(太字の赤から緑)までの9つのステップを試してみてください。そうすれば、RGB1が厄介な緑がかった茶色に遷移するのがわかります。ただし、HSV勾配は、太字の黄色に移行します。
ポイントEの色は、赤/緑/青の組み合わせになります。各色軸を、A、B、C、Dの同じ色軸の平均として計算し、距離で熟考します。
distance_a = sqrt((xa-xe)^ 2 +(ya-ye)^ 2)
distance_b=...。
sum_distances = distance_a +distance_b..。
赤=(red_a distance_a + red_b distance_b ...)/ sum_distances
color_E = ColorFromARgb(赤、緑、青)