Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Вниз

Математика наложения   Найти похожие ветки 

 
Ricks ©   (2007-04-02 11:03) [0]

Есть две картинки, содержащие alpha канал (будем считать это слоями). Как наложить их друх на друга так, чтобы цвета этих точек усреднялись должным образом. Например:
если на полупрозрачный (50%) черный наложить 50% белый то получим 75% цвет (170, 170, 170), если же наоборот — получим 75% цвет (85, 85, 85).
Значение альфа вычисляется по формуле:
A = (a0/255 + (1-a0/255)*a1/255) * 255;
А вот как быть с цветом?


 
Ricks ©   (2007-04-02 12:01) [1]

Хотя может быть и формула для alpha неправильная... :(


 
oxffff ©   (2007-04-02 12:07) [2]

displayColor = sourceColor* alpha/255 + backgroundColor* (255 – alpha) /255


 
oxffff ©   (2007-04-02 12:08) [3]

Примени эту формулу для R,G,B составляющих по отдельности


 
Ricks ©   (2007-04-02 12:25) [4]

Спасибо, но эта формула не работает.
Смотри:
если фон (0, 0, 0, 0) (полность. прозрачный черный цвет) и на него мы накладываем 50% (255, 255, 255, 127) белый то получим в итоге:

255 * 127 / 255 + {0 * (255 - 127) / 255]|=0} = 127

А должны были получить (255, 255, 255, 127)!


 
TRUNK ©   (2007-04-02 12:29) [5]

NewAlpha = 1 - (1-Alpha_1)*(1-Alpha_2);
NewRed = (Red_1*Alpha_1*(1-Alpha_2) + Red_2*Alpha_2)/NewAlpha
NewGreen = (Green_1*Alpha_1*(1-Alpha_2) + Green_2*Alpha_2)/NewAlpha
NewBlue = (Blue_1*Alpha_1*(1-Alpha_2) + Blue_2*Alpha_2)/NewAlpha

P.S. Все значения в диапазоне [0..1]


 
Ricks ©   (2007-04-02 12:32) [6]

Сейчас испытаю!


 
ЮЮ ©   (2007-04-02 12:33) [7]

> А должны были получить (255, 255, 255, 127)!

если он полупрозрачный, откуда (255, 255, 255)?
(127, 127, 127) как раз и означает, что черезн него "просвечивается" черный. В результате имеем "серый"


 
Ricks ©   (2007-04-02 12:37) [8]


> ЮЮ


> "просвечивается" черный

но ведь черный то — полностью прозрачный, т.е никакого черного там не должно быть!


 
Ricks ©   (2007-04-02 12:39) [9]


> TRUNK ©


СПАСИБО тебе огромное!!!!


 
TRUNK ©   (2007-04-02 12:42) [10]

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


> если он полупрозрачный, откуда (255, 255, 255)?
> (127, 127, 127) как раз и означает, что черезн него "просвечивается"
> черный

Наложение происходит на полностью прозрачный чёрный цвет, т.е. его как бы и нет, в результате у нас остаётся только наложенный белый.


 
oxffff ©   (2007-04-02 13:38) [11]


> А должны были получить (255, 255, 255, 127)!


Кто должен?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.062 c
15-1177769617
Ketmar
2007-04-28 18:13
2007.05.27
IEEE754-тика угрожает человечеству


2-1178709554
Alon121
2007-05-09 15:19
2007.05.27
Открытый массив для записей


15-1177416368
alex_***
2007-04-24 16:06
2007.05.27
Транзакции для распределенных систем. Кто использовал?


2-1178525796
Lobach
2007-05-07 12:16
2007.05.27
Фреймы


15-1177425719
NeyroSpace
2007-04-24 18:41
2007.05.27
Почему у Microsoft ничего не выйдет с .Net





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский