-
Суть вопроса такова: взгляните на данный рисунок:
http://i1.ambrybox.com/300511/1306705394276.png
на нем нарисовано два круга синего и красного цветов, с альфа каналом 128 (50%). Эти круги перекрываются в определенной области. Собственно нужно найти значение RGBA в этой области (они обозначены знаками вопросов).
Значение альфа канала может меняться. -
antonn © (30.05.11 19:59) [1]сам недавно парился с формулой, только у меня накладываемое изображение нужно было с некоторым прцоентом полупрозрачности наложить. Но по сути было так:var x, y: Integer; _r,_b,_g:integer; RowOut,RowIn:PRGBAArray; amount:double;
begin
..
//in - накладываемое изображение, out - результирующее
amount:=(RowOut[x].rgbReserved/RowIn[x].rgbReserved);
_r:=round((1-amount)*RowIn[x].rgbRed+amount*RowOut[x].rgbRed); if(_r>255) then _r:=255 else if(_r<0) then _r:=0;
RowOut[x].rgbRed:=_r; //красный канал
RowOut[x].rgbReserved:=max(RowIn[x].rgbReserved,RowOut[x].rgbReserved);
собственно код тут: http://forum.sources.ru/index.php?showtopic=330729&st=0entry2888880
сам бы хотел знать является ли формула правильной -
MBo © (30.05.11 20:49) [2]вот тут см. ассоциативные формулы (две последние формулы перед разделом Analytical derivation)
http://en.wikipedia.org/wiki/Alpha_compositing