2011-01-20 10 views
6

与えられた2つの値の間の色のパーセント値を決定する最良の方法は何ですか?言い換えれば、色Cの%位置を計算する最良の方法は何ですか?2つの既知の色の間の色のパーセント値を求める

色A - で0x0000FF 色B - 0x00CCFF 色C - 0x00FFFF

ありがとう!

+0

これもあります:https://code.google.com/p/mojocolors/を調べる価値があります – Daniel

答えて

6

これは色を量子化する方法に依存するため、それほど単純ではありません。

私の意見では正しい方法ですが(実際は必ずしもそうではありませんが)、または16進数の値を使用することで、HSBで行うことができます。

最速はHAXが

var colour:uint = 0x9900CC; 
var r:uint = colour >> 16; 
var g:uint = colour >> 8 & 0xFF; 
var b:uint = colour & 0xFF; 

.thisは、それぞれの計算を行う、その後(ABCが色である)あなたに

を各チャンネル(C)の値を与える値使用してそれを行うには、おそらくですあなたはこれらのシャネルズのそれぞれを得れば、チャネル(C)

(cB - cA)/(cC - cA) 

そして、あなたは3

で一緒に除算して追加することができます

しかし、カラーAとCがどのチャンネルでも同じ場合は、例外を追加する必要があります(cCとCAはゼロであり、ゼロで割ることはできません)。その違いをどのように処理するかを決定する。

+0

ありがとうダニエル、これは完璧に機能しました。 – Andrei

+1

私は間違いなくHSL、HSL、または他の円柱カラーシステムを使って試してみます。アプリケーションによっては、より良い(またはより意味のある)結果を得ることができます。 – mpdonadio

+0

まだ2つの数字が同じで、中間の数字が違う場合を扱う最も適切な方法は何か、数学的には無限大です。これはHSV(HSB、HSL)を扱っていても同じです。 – Daniel

関連する問題