我試圖通過檢查頂點的唯一性來修剪3D網格。但是因爲每個頂點都有某種與之相關的錯誤,所以兩個「相似」的頂點實際上可能是相同的。例如在一些ε內檢查Java對象的唯一性
< 1.9999999,1,3>可能是相同的頂點爲< 2.000001,1,3>
我有幾百萬,我需要檢查的頂點,所以我打算把所有的對象成散列表和查詢來查看它們是否是唯一的。重寫isEqual很容易:取兩個座標之間的差值的絕對值併除以1的大小。例如:
if (Math.abs((x2-x2)/x1) < 0.0000001) return true;
但是我怎麼想出一個哈希代碼將返回相同的兩個有效平等的,但不完全相等的頂點?
我想過量化這個空間,也就是說整個集合都要佔據一些小數位。但是,在我上面的示例中,例如,我將圍繞< 1.999,1,3>和< 2.000,1,3>。
在將頂點放入地圖之前,將數字四捨五入可能會更加健壯。 – assylias