フロートの比較に伴うすべての問題をよく知っています。これがまさにこの質問の理由です。
3D ベクトル (3 つの浮動小数点数 - x、y、z) である値の高速ハッシュ テーブルを作成しようとしています。sqrt(x*x+y*y+z*z)
ベクトルの長さは常に 1.0 (は 1.0) であると仮定できます。
基本的に、これは、同じ unsigned int 値とほぼ等しい値を取るハッシュ関数と、ハッシュ値が等しい場合に真である対応する等値演算子を探していることを意味します (必ずしもそれらが等しい場合だけではありません)。
編集-
これはハッシュ テーブルであるため、誤検知 (つまり、異なるが同じバケットにマップされるベクトル) が発生します。
偽陰性 (つまり、近いが異なるバケットにマップされるベクトル) は望ましくありませんが、それらを回避する方法はないようです。私の場合、それらは完全な破損を引き起こすわけではなく、私が対処しなければならないデータの重複だけです。