0

在 Frank D Lunas DirectX11 书中,第 356 页,第 9.5.4 节,他有一个方程

(rs, gs, bs) * (as, as, as) + (rd, gd, bd) * (1-as, 1-as, 1-as)
    = as(rd, gd, bd) + (1-as)(rs, gs, bs) 

其中 * 是组件明智的乘法。

(r, g, b) 是指颜色。

4

5 回答 5

3

这看起来不正确。它应该是:

as*(rs, gs, bs) + (1-as)(rd, gd, bd)

我假设这是使用源 alpha 的透明度操作。

于 2013-08-08T21:39:17.977 回答
2

(rs, gs, bs) * (as, as, as) + (rd, gd, bd) * (1-as, 1-as, 1-as)

展开组件明智的乘法

(as*rs, as*gs, as*bs) + ((1-as)*rd, (1-as)*gd, (1-as)*bd)

分解

as(rs, gs, bs) + (1-as)(rd, gd, bd)

我想这一定是书中的错误。

于 2013-08-08T21:39:13.693 回答
0

正如你所写的,我认为等式是错误的。因为*表示组件明智的乘法:

(rs, gs, bs) * (as, as, as) = as(rs, gs, bs)
(rd, gd, bd) * (1-as, 1-as, 1-as) = (1-as)(rd, gd, bd)

所以:

(rs, gs, bs) * (as, as, as) + (rd, gd, bd) * (1-as, 1-as, 1-as)
    = as(rs, gs, bs) + (1-as)(rd, gd, bd)
于 2013-08-08T21:37:30.147 回答
0

书上好像有错误。

(rs, gs, bs) * (as, as, as) + (rd, gd, bd) * (1-as, 1-as, 1-as)
    = (rs*as, gs*as, bs*as) + (rd*(1-as), gd*(1-as), bd*(1-as))
    = as(rd, gd, bd) + (1-as)(rs, gs, bs) 
于 2013-08-08T21:39:57.727 回答
0

可能是因为分量乘法 (a,b,c)*(d,d,d) 与行向量 (a,b,c) * d 上的简单标量乘法相同?

http://www.wolframalpha.com/input/?i=%28a%2Cb%2Cc%29%28d%2Cd%2Cd%29 http://www.wolframalpha.com/input/?i=%28a%2Cb %2Cc%29+d

只是猜测

于 2013-08-08T21:41:39.227 回答