19

私はレイ トレーサーを作成していますが、プロセスの一部で、オブジェクト (ジオメトリ オブジェクト) に当たる場合と当たらない場合があるレイを発射しています。オブジェクトを記述する方程式の多くは、交差が発生しない場合 (交差は虚数) に NaN を自然に返しますが、交差が発生しない場合、すべてのオブジェクトが NaN を返すわけではありません。

交差が発生しない場合は sqrt(-1) を強制的に返すことができることはわかっていますが、より安価な方法でこれを返す方法があるかどうか疑問に思っていました。

4

4 に答える 4

29

This should work:

#include <limits>

return std::numeric_limits<double>::quiet_NaN();
于 2012-12-07T08:56:13.253 に答える
18
return std::numeric_limits<double>::quiet_NaN();
于 2012-12-07T08:55:18.930 に答える
8

私はそれが古い質問であることを知っていますが、C++ 11 ではnan(const char*)、関数のファミリがあります (nanダブル、nanlロングダブル、nanfフロート用)。引数は実装固有ですが、空の文字列 ( などnan("")) を渡すと、一般的な NaN 値が返されます。

于 2015-08-13T17:22:22.970 に答える