有没有可能简化这个if语句?
如果是这样,答案是什么?
if (type)
{
if(NdotL >= 0.0)
{
color += Idiff + Ispec;
}
}
else
{
color += Idiff + Ispec;
}发布于 2013-11-29 06:48:57
从布尔代数的角度来考虑这一点。你有两个条件
A = (type)
B = (NdotL >= 0.0 )并在下列情况下执行语句
A * B
/A(我用/A表示“非A",用*表示" and”)
所以你唯一不会执行的是
A * /B这意味着您的语句应该是
if (!((type) && NdotL < 0.0 )) {
// do your thing
}或者,使用布尔型标识
(A * B) = /(/A + /B)您可以将您的条件重写为
( /A + B )
if ( !(type) || ( NdotL >= 0 ) ) {
// do your thing
}发布于 2013-11-29 06:43:22
if (!type || NdotL >= 0.0)
{
color += Idiff + Ispec;
}发布于 2013-11-29 06:45:11
使用
if (type && NdotL > 0.0){
Blah....
} else {
Buegh...
}这样它就结合了这两个条件。
对于缩进之类的事情真的很抱歉,但是这个网站的移动版本不允许你输入代码,我只是想帮你XD!
https://stackoverflow.com/questions/20275774
复制相似问题