2011-01-20 3 views
6

Каков наилучший способ определения процентного значения цвета между двумя заданными значениями. Другими словами, каков наилучший способ расчета% положения цвета C?Найти процентное значение цвета между двумя известными цветами

Цвет A - 0x0000FF Цвет B - 0x00CCFF Цвет C - 0x00FFFF

Спасибо!

+0

есть также: https://code.google.com/p/mojocolors/, возможно, стоит посмотреть на – Daniel

ответ

6

хорошо, что это не так прямо, потому что это зависит от того, как вы решили квантовать цвет.

Вы можете сделать это через HSB, что является более правильным способом, на мой взгляд (хотя и не обязательно фактом), или просто используйте шестнадцатеричное значение.

быстрый, вероятно, сделать это с помощью HAX значения

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

.this даст вам значение каждого канала (с) (ABC будучи цвета)

затем сделать математику для каждого канал (с)

(cB - cA)/(cC - cA) 

то, как только вы получаете каждый из этих аэрожелобами, вы можете добавить их вместе и разделить на 3.

есть одна проблема, хотя, если цвета A и C всегда одинаковы для любого канала, вам нужно добавить исключение (потому что cC и CA равны нулю, и вы не можете делить на ноль), в этот момент вам также понадобится чтобы решить, как справиться с этой разницей.

+0

Спасибо, Daniel, это сработало отлично. – Andrei

+1

Я бы определенно попробовал его с помощью HSL, HSL или одной из других цилиндрических систем цвета. В зависимости от вашего приложения вы можете получить лучшие (или более значимые) результаты. – mpdonadio

+0

Еще интересно, какой самый подходящий способ иметь дело с случаем, когда два числа одинаковы, а число между ними различно, математически разница - бесконечность. Это было бы то же самое, даже с HSV (HSB, HSL) – Daniel

Смежные вопросы