我正在编写一个光线追踪器,其中一部分是发射一条光线,这条光线可能会击中一个对象(几何对象)。描述对象的方程之一如果没有交点(交点为虚数)则自然地返回NaN,但并不是所有对象都在没有交点时返回NaN。
我知道如果没有交点可以强制返回sqrt(-1),但我想知道是否有一种更简单的方法来返回它。
这应该可以工作:
#include <limits>
return std::numeric_limits<double>::quiet_NaN();
return std::numeric_limits<double>::quiet_NaN();
我知道这是一个老问题,但是在C++11中,您可以使用nan(const char*)
函数族(nan
用于双精度浮点数,nanl
用于长双精度浮点数,nanf
用于单精度浮点数)。参数是实现特定的,但是传递空字符串(例如nan("")
)将返回一个通用NaN值。
nan
函数的参考链接:http://www.cplusplus.com/reference/cmath/nan-function/ - Carltonmath.h
中的 NAN
宏也可用。<cmath>
而不是<math.h>
。 - HolyBlackCat