Помощь - Поиск - Пользователи - Календарь
Полная версия: Палитра из цветов радуги
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Romtek
Я нашёл этот код, но мне нужен перелив цветов от красного до синего (через зелёный, по спектру). А этот делает перелив от синего до красного и снова до синего.
Код
type
rgb = record
 r,
 g,
 b : byte
end;
paltype  = array[0..255] of rgb;

procedure GradientPal (var pal: paltype);
var i: byte;
begin
    For I := 0 To 255 Do
    with pal[i] do
    begin
         r := Round (Abs (127.0 * sin ( I * Pi/256.0)));
         g := Round (Abs (127.0 * sin ( I * Pi/128.0)));
         b := Round (Abs (127.0 * cos ( I * Pi/256.0)))
    end;
end;

Что нужно изменить?
P@sh@
такая палитра пойдет?
Код

 for i:=0 to 255 do with pal[i] do begin
   if i>127 then r:=0 else r:=(128-i)*2;
   if i<128 then b:=0 else b:=(i-128)*2;
   if i<128 then g:=255-r else g:=255-b;
 end;

хоть и не совсем по спектру... фиолетового нет, да и зависимость линейная...
P@sh@
если нужен фиолетовый, тогда на три части подели диапазон, а не на две, как у меня... но тогда к красному все вернется
Бродяжник
Господа, раз уж речь зашла о спектрах, подскажите, пожалуйста, как вообще получить на экране плавный переход хотя бы от черного к белому, то есть от $000000 до $FFFFFF. Нет, вычислить это я могу. Но когда этими вычисленными по науке цветами рисуешь на canvas'e, получается жуткая зебра. Хорошо, оставим смешение цветов, возьмем от черного к красному, то есть от $000000 до $0000FF. Так опять ведь зебра выходит, если идти через 1. В полной мере ожиданиям соответсвуют только 8 цветов - чистые R,G,B, их смеси и черный цвет. А где мои 16 лет... то есть "16 миллионов цветов"? Как мне их расположить в человеческом порядке?
Romtek
Цитата(P@sh@)
такая палитра пойдет?
Именно то, что надо!
Спасибо!
Romtek
Хотя...
жёлтого тоже хочется.
P@sh@
Бродяжник
по 255 градаций каждой компоненты - это и есть 24-битный цвет (256*256*256=16777216)... какие нафиг полосы? ты наверное в 256-цветном режиме смотришь? smile.gif

romtek
открой где-нибудь диалог выбора цвета и возьми оттуда несколько ключевых точек на нужные цвета, а потом проинтерполируй, наверное даже линейной хватит
Бродяжник
To P@sh@
Сорри... huh.gif Плохо быть таким бестолковым. Это у меня мозги слегка перекосило. Написал три программы - на Паскале, на Дельфи+GDI, на Дельфи+OpenGL - и всюду сделал одну и ту же ошибку. Вместо "1" написал "i".
На выходных отдохнул, мозги прояснились... <_< В общем, если это полезно, сейчас попробую прикрепить файл с плодами своих изысканий...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.