方程如何简化为

时间:2013-08-08 21:31:47

标签: c++ directx

在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)是指颜色。

5 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分: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)

我认为这一定是书中的错误。

答案 2 :(得分: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)

答案 3 :(得分: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) 

答案 4 :(得分: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

猜猜