Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
8-1158154178
Lockdog
2006-09-13 17:29
2007.05.27
Определение цвета и преобразование палитры


15-1178091590
kyn66
2007-05-02 11:39
2007.05.27
При установке Rx2.75 (для D7) впервые появился глюк


4-1166908044
Drone
2006-12-24 00:07
2007.05.27
Потоки и сообщения от одного к другому


15-1177678939
Сергей М.
2007-04-27 17:02
2007.05.27
People to Purple


15-1177835989
SkySpeed
2007-04-29 12:39
2007.05.27
Проблема с IDE-SATA