Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > алгоритм рисования палитры цветов


Автор: alex77 5.10.2006, 10:14
Здравствуйте.

Интересует алгоритм построения такой палитры (в прикрепленном файле). Может кто-нибудь знает, или делал?
Вариант с предварительным созданием списка цветов не подходит.

p.s. делаю форму для выбора цвета, наподобие той, что в FCKEditor, только с другими цветами. Делать буду на PHP.

Автор: maxim1000 5.10.2006, 10:33
касательно средней горизонтальной линии
скорее всего, там идёт такое:
делается три "зубца" красного, зелёного и синего, сдвигаются друг относительно друга и накладываются
т.е. 3 участка одинаковой длины:
1. красный с 255 равномерно падает до 0, зелёный с 0 равномерно возрастает до 255, синий - 0
2. зелёный падает до 0, синий возрастает до 255
3. синий падает до 0, красный возрастает до 255

что происходит по вертикали не уверен, но можно попробовать такое:
в нижней половине каждая компонента умножается на коэффициент, который в ценртре равен 1, в самом низу - 0, а между ними изменяется линейно
в верхней половине так:
берём цвет из симметричной ему нижней точки и дополняем серым неиспользованный диапазон
т.е к каждой компоненте добавляем 255*(1-коэффициент)

Автор: alex77 5.10.2006, 11:07
Начал делать со средней гориз. линии, получилось такое (см. прикрепл. файл).
Либо я не так понял, (хотя вроде бы всё просто), либо немножко не тот алгоритм.

Автор: maxim1000 5.10.2006, 11:21
а... наверное, надо ещё попробовать нормализацию
т.е. умножить все компоненты на 255/max(r,g,b)

Автор: SectoR 5.10.2006, 19:21
Интересня "фишка" smile , может кто поделится исходником?! 

Автор: alex77 6.10.2006, 07:08
Цитата(maxim1000 @  5.10.2006,  11:21 Найти цитируемый пост)
а... наверное, надо ещё попробовать нормализацию
т.е. умножить все компоненты на 255/max(r,g,b) 


Попробовал, получается практически то-же самое. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)