前几天游戏程序爆在三角形碰撞测试里面.
结果发现是D3DXIntersectTri给我返回了一个float(-1.#INF000).
这个值相信大家都不陌生.
出现这个值的情况一般是除数为0的情况下,即分母为0.
就像这样:
float a = .7f;
float b = .0f;
a /= b;
那么如何判断一个float/double值是不是(-1.#INF000)呢?
答案是有的.
我们发现当a为-1.#INF000的时候;
a 做任意操作结果都为自身.
所以.
很简单,按上面的例子来.
当执行完a /= b; 时a已经=-1.#INF000
那么判断一下:
if (a + 1 == a - 1)
return true; // 说明是一个无效的数
其实结论是 a + 任何数 == a;