我想點1和點2之間的距離與點1和點3我之間的距離比較想找到較小的一個。唯一的問題是所有三個點的xy值相當大,使用距離公式可能會導致溢出。還有另一種方法來找到距離?計算與大XY點之間的距離值
0
A
回答
2
1
Math.hypot()
可以是在該上下文中是有用的,作爲「最後的結果是沒有介質溢或上溢。」
1
它是最快的解決方案:
double dx12=x1-x2;
double dy12=y1-y2;
double dx13=x1-x3;
double dy13=y1-y3;
double r12sq=dx12*dx12+dy12*dy12;
double r13sq=dx13*dx13+dy13*dy13;
int minR= r12sq>r13sq ? Math.sqrt(r13sq) : Math.sqrt(r12sq);
你需要採取只開方 - 一個最短距離。
正常化由一些固定常數是毫無意義的雙。
如果使用整數,而不是雙打,由一些固定不變的歸一化和座標的中心可能是其他一些有用的距離和壞。例如,如果你除以1000,對於幾十億有差異的座標是有利的,但是對於幾百個差異的差異,其效果將會被消滅。因此,只有在獲得中等dx和dy後,才能評估標準化的有用係數。讓我們需要4位數字作業
int dx12=x1-x2;
int dy12=y1-y2;
int dx13=x1-x3;
int dy13=y1-y3;
int d=(abs(dx12) +abs(dx13) + abs(dy12) + abs(dy13));
int coeff = d/10000;
if(coeff<1) coeff=1;
int dx12=dx12/coeff;
int dy12=dy12/coeff;
int dx13=dx13/coeff;
int dy13=dy13/coeff;
int r12sq=dx12*dx12+dy12*dy12;
int r13sq=dx13*dx13+dy13*dy13;
int minR= r12sq>r13sq ? Math.sqrt(r13sq) : Math.sqrt(r12sq);
在這裏,您可以乘以這些int變量而不會溢出。
+0
請解釋爲什麼縮放值是「危險的」。 – Paul 2012-01-05 13:32:06
相關問題
- 1. 計算matlab中點之間的距離
- 2. 計算點之間的距離
- 3. 如何計算點之間的距離?
- 4. 在excel中,如何計算兩組大點與經緯度之間的距離?
- 5. 計算用戶與附近地點之間的距離,計算出的距離一直顯示爲0?
- 6. 計算兩次之間的距離
- 7. gnuplot - 計算行之間的距離
- 8. 計算座標之間的距離
- 9. 計算2 lat long之間的距離
- 10. 計算曲線之間的距離
- 11. 算法來計算許多地理點之間的距離
- 12. 計算2個三維點之間距離的算法?
- 13. 如何計算2點或更多點之間的距離? C#
- 14. 計算二維空間中兩點之間的距離?
- 15. n點/ scipy中N點與參考點之間的有效距離計算
- 16. 計算兩點之間的距離顯示了錯誤的距離
- 17. 當計算交叉軌跡距離(線段與球體上的點之間的距離)時會出現負值
- 18. 計算平坦的土地上的兩點之間的距離
- 19. 計算不同草圖中的點之間的距離SolidWorks API
- 20. 需要計算道路與起點之間指定距離的交點座標
- 21. PIG:計算緯度和經度對之間的最大距離
- 22. Java:計算大量位置和性能之間的距離
- 23. 計算數組中向量之間的最大距離
- 24. 點與線之間的垂直距離
- 25. php mysql計算2點之間的距離
- 26. 使用Java Graphics2D計算點和麪積之間的距離
- 27. 使用sql計算2點之間的距離
- 28. 如何計算Perl中兩點之間的距離?
- 29. OpenLayers:如何計算兩點之間的距離?
- 30. 計算GPS點之間的步行距離
你寫了一個點類與x,y作爲整數字段? – 2012-01-05 03:44:14
Double.MAX_VALUE = 1.7976931348623157E308,你的距離真的很大嗎? – Bill 2012-01-05 03:44:43
@SrinivasReddyThatiparthy不,我使用提供給我(android.graphics.Point)Point類 – Jrom 2012-01-05 03:46:35