第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

RGB值的加色混合算法

RGB值的加色混合算法

RGB值的加色混合算法我正在尋找一種算法來為RGB值進(jìn)行加色混合。是否像將RGB值一起添加到最大值256一樣簡單?(r1, g1, b1) + (r2, g2, b2) =     (min(r1+r2, 256), min(g1+g2, 256), min(b1+b2, 256))
查看完整描述

3 回答

?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

這取決于你想要什么,它可以幫助看看不同方法的結(jié)果。

如果你想

紅色+黑色=紅色紅色+綠色=黃色紅色+綠色+藍(lán)色=白色紅+白=白 黑+白=白

然后添加一個(gè)夾子工程(例如min(r1 + r2, 255))這更像你提到的燈光模型。

如果你想

紅色+黑色=深紅色紅色+綠色=深黃色紅色+綠色+藍(lán)色=深灰色紅+白=粉紅色黑+白=灰

那么你需要對這些值進(jìn)行平均(例如(r1 + r2) / 2)這對于減輕/變暗顏色和創(chuàng)建漸變效果更好。


查看完整回答
反對 回復(fù) 2019-08-16
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

要使用Alpha通道進(jìn)行混合,您可以使用以下公式:


r = new Color();

r.A = 1 - (1 - fg.A) * (1 - bg.A);

if (r.A < 1.0e-6) return r; // Fully transparent -- R,G,B not important

r.R = fg.R * fg.A / r.A + bg.R * bg.A * (1 - fg.A) / r.A;

r.G = fg.G * fg.A / r.A + bg.G * bg.A * (1 - fg.A) / r.A;

r.B = fg.B * fg.A / r.A + bg.B * bg.A * (1 - fg.A) / r.A;

fg是油漆的顏色。bg是背景。r是產(chǎn)生的顏色。1.0e-6只是一個(gè)非常小的數(shù)字,以彌補(bǔ)舍入誤差。


注意:此處使用的所有變量都在[0.0,1.0]范圍內(nèi)。如果要使用[0,255]范圍內(nèi)的值,則必須除以255或乘以255。


例如,50%綠色之上的50%紅色:


// background, 50% green

var bg = new Color { R = 0.00, G = 1.00, B = 0.00, A = 0.50 };

// paint, 50% red

var fg = new Color { R = 1.00, G = 0.00, B = 0.00, A = 0.50 };

// The result

var r = new Color();

r.A = 1 - (1 - fg.A) * (1 - bg.A); // 0.75

r.R = fg.R * fg.A / r.A + bg.R * bg.A * (1 - fg.A) / r.A; // 0.67

r.G = fg.G * fg.A / r.A + bg.G * bg.A * (1 - fg.A) / r.A; // 0.33

r.B = fg.B * fg.A / r.A + bg.B * bg.A * (1 - fg.A) / r.A; // 0.00

產(chǎn)生的顏色為:(0.67, 0.33, 0.00, 0.75)或75%棕色(或深橙色)。


你也可以反轉(zhuǎn)這些公式:


var bg = new Color();

if (1 - fg.A <= 1.0e-6) return null; // No result -- 'fg' is fully opaque

if (r.A - fg.A < -1.0e-6) return null; // No result -- 'fg' can't make the result more transparent

if (r.A - fg.A < 1.0e-6) return bg; // Fully transparent -- R,G,B not important

bg.A = 1 - (1 - r.A) / (1 - fg.A);

bg.R = (r.R * r.A - fg.R * fg.A) / (bg.A * (1 - fg.A));

bg.G = (r.G * r.A - fg.G * fg.A) / (bg.A * (1 - fg.A));

bg.B = (r.B * r.A - fg.B * fg.A) / (bg.A * (1 - fg.A));

要么


var fg = new Color();

if (1 - bg.A <= 1.0e-6) return null; // No result -- 'bg' is fully opaque

if (r.A - bg.A < -1.0e-6) return null; // No result -- 'bg' can't make the result more transparent

if (r.A - bg.A < 1.0e-6) return bg; // Fully transparent -- R,G,B not important

fg.A = 1 - (1 - r.A) / (1 - bg.A);

fg.R = (r.R * r.A - bg.R * bg.A * (1 - fg.A)) / fg.A;

fg.G = (r.G * r.A - bg.G * bg.A * (1 - fg.A)) / fg.A;

fg.B = (r.B * r.A - bg.B * bg.A * (1 - fg.A)) / fg.A;

公式將計(jì)算背景或油漆顏色必須產(chǎn)生給定的結(jié)果顏色。


如果您的背景不透明,結(jié)果也將是不透明的。然后,前景色可以采用具有不同α值的一系列值。對于每個(gè)通道(紅色,綠色和藍(lán)色),您必須檢查哪個(gè)alpha范圍會(huì)產(chǎn)生有效值(0 - 1)。


查看完整回答
反對 回復(fù) 2019-08-16
  • 3 回答
  • 0 關(guān)注
  • 1639 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號