Главная страница
    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.041 c
2-1178725924
metalpriest
2007-05-09 19:52
2007.05.27
Программное управление курсора в TEdit


2-1178777782
Шакал
2007-05-10 10:16
2007.05.27
Проблемы работы написанных программ в win98-2000


15-1177873061
FesRV
2007-04-29 22:57
2007.05.27
DelphiX


2-1178467571
Malik
2007-05-06 20:06
2007.05.27
TMemo


11-1160141707
Zoom Evstrahiev
2006-10-06 17:35
2007.05.27
Зеркало для KOLCoolBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский