![]() |
Градиент от А до Я или полноцветный градиент
Люди, поюзав немного программный градиент захотелось сделать (пииип!) радугу, но я даже не понял как сделать градиент более двух цветов... Подскажите кто знает, как это сделать?
Спасибо :) |
_root.createEmptyMovieClip( "grad", 1 );
with ( _root.grad ) { colors = [ 0xFF0000, 0x0000FF,0x00FF00 ]; alphas = [ 100, 100,100 ]; ratios = [ 0,0x11, 0xFF ]; matrix = { a:200, b:0, c:0, d:0, e:200, f:0, g:200, h:200, i:1 }; beginGradientFill( "linear", colors, alphas, ratios, matrix ); moveto(100,100); lineto(100,300); lineto(300,300); lineto(300,100); lineto(100,100); endFill(); } stop(); // чуть подправленный пример из хелпа // трехцветный градиент |
здесь нужна система не RGB а HSV (HSL)...
по ней все легко и просто получается :) кто найдет полное объяснения какого-нибудь способа перевода rgb <--> hsl, будет тому щастье :) я не нашел... вот. код не мой, где взял - не помню :) почему из ржб в хсв тут переводится именно так - я не понимаю... Код:
// FULL GRADIENT FILL EXAMPLE |
|
код что я запостил выше - точно тот же что и у этого дядьки (может я у него и взял ?..)
я его видел и читал... НО я не понимаю этой математики :) почему так ? он там ничего не объясняет в коде, просто пишет, цитирую: "The colour-space conversion is based purely on my own interpretation and intuitive notion of the colour spaces." ага, я за него очень рад, он умный, но объяснения нету :) речь ведь не о том, чтобы найти готовую программу и использовать, а о том, чтобы хотя бы для начала понять что она делает и зачем :) |
А я то почем знаю, мы боты даем ответы приблизительно по теме :)
|
Цитата:
|
А впринципе вдумался :)
HSB - hue, saturation, brightness Вся модель прдеставляется в виде цилиндра. H - можно представить в виде окружности (весь спектр) где в 0-ле градусов красный цвет, в 120-ти - зеленый, в 240-ка - синий, наши знакомые RGB :) В 60-ти градусах между чистым красным и чистым зеленым значение обоих будет 255 по RGB, тоесть получиться желтый, а вот в 30 градусах будет 255 красного и 127 зеленого - тоесть оранжевый :) S - это как говорят "добавление белой краски", насыщенность, тоесть если у нас HSB [60,100,100] - то это значит, у нас по 255 RGB-ишных красного и зеленого, к синему, который имеет значение 0, ничего не прибавляется, но если сделать HSB[60,50,100] - где S равна 50%, то синяя компонента станет у нас 127, если синия компонента у нас была бы скажем 127 при 100% насышенности, то при 50% она стала бы (255 - 127)/2 + 127 `= 191 B Ну тут все понятно - Яркость или "добавление черной краски" - тут урезаем значение каждого цвета, тоесть если при 100% яркости максимальное значение красного было 255, то при 50% будет 127, и это соответсвенно берется в расчет насыщенности, тоесть HSB[60,100,50] = RGB[128,128,0], а HSB[60,50,50] будет RGB[128,128,64] 2Nox Noctis: хреновый из меня бот вышел :) |
мда... а из меня бот, видимо, замечательный...
вот я по отдельности все твои слова понимаю - а что вместе получается... из ржб в хсв (или обратно) нет функции (т.е. взаимнообратного соответствия)... то есть все варианты рассчета приблизительны... в принципе это же должно быть похоже на перевод из ортогональных координат в циллиндрические, да ? но что там за шаманство с переменными тогда... |
Всем огромное спасибо!
|
| Часовой пояс GMT +4, время: 14:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.