頂点の一意性をチェックして、3D メッシュを削除しようとしています。しかし、各頂点には何らかのエラーが関連付けられているため、2 つの「類似した」頂点が実際には同じである可能性があります。例えば
<1.9999999, 1, 3> は <2.000001, 1, 3> と同じ頂点である可能性があります
何百万もの頂点を確認する必要があるため、すべてのオブジェクトをハッシュ テーブルに入れ、クエリを実行してそれらが一意かどうかを確認します。isEqual のオーバーライドは簡単です。2 つの座標の差の絶対値をとり、1 の大きさで割ります。例えば:
if (Math.abs((x2-x2)/x1) < 0.0000001) return true;
しかし、2 つの実質的に等しいが完全に等しいわけではない頂点に対して同じ値を返すハッシュコードをどのように考え出すのでしょうか?
スペースをクォンタイズすること、つまり、セット全体のフロアを小数点以下の桁数にすることを考えました。しかし、上記の例では、たとえば <1.999, 1, 3> と <2.000, 1, 3> に丸めます。