內置功能找到距離
回答
好了,你可以在complex numbers使用算術:
using point_t = std::complex<int>;
double distance(point_t a, point_t b) {
std::sqrt(norm(b - a))
}
我知道這並不相當滿足您不是在寫自己的功能,但實際距離邏輯的要求在std::norm
function中實施。它只是返回距離的平方。
從一些有限的經驗,我會建議考慮平方根是否實際上是一個必要的操作。通常你可以通過單獨的距離平方來解決所有的問題(記住平方是單調的),所以沒有必要保持這種昂貴的操作。 –
@KerrekSB *如果*你只需要比較距離,是的。不過,我想保留答案,我不想推定一個特定的用例。 –
如果用'std :: abs(b-a)'代替上面的身體會有什麼缺點嗎? ([std :: complex'中的'std :: abs']](http://en.cppreference.com/w/cpp/numeric/complex/abs))?比較'std :: norm'和'std :: abs' [在libstdC++](https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a00812_source.html)中的實現,它看起來後者在將它們平方之前修改了真實和複雜組件中最長的一個的長度。使用'std :: norm'方法不會做任何這樣的「組件標準化」。使用'std :: abs'(impl。)方法的上/下可能是什麼? – dfri
我覺得很容易找到:
三維空間中兩點之間的線性距離。
d = SQRT((X2 - X1)^ 2 +(Y2 - Y1)^ 2 +(Z2 - Z1)^ 2)
曼哈頓距離是不同的,在2D非常使用遊戲:
d = | (x2-x1)| + | (y2-y1)|
typedef struct {
float x, y, z;
} point_t;
typedef struct {
int x, y;
} point2d_t;
double distanceFinder(point_t a, point_t b)
{
return sqrt(pow(a.x-b.x, 2.0) + pow(a.y-b.y, 2.0) + pow(a.z-b.z, 2.0));
}
int manhattanFinder(point2d_t a, point2d_t b)
{
/* Considering the points have integer coordinates and is a 2D game */
return abs(a.x - b.x) + abs(a.y - b.y);
}
並非如此。二維距離是一個數學函數,如果我們在C/C++中查看可用的數學函數,我們發現它們是以數字運算的。但是這是非特定的:我們實際發現的是,函數具有不同的名稱(在C中)或者被重載(在C++中)以在不同的類型(int,float,double,& c。)上操作。要麼是這個,要麼是演員。
幸運的是,數字的類型是有限的,所以有一般的圖書館來做這種事情是有道理的。
現在,我們能否像構建數學函數一樣構造2D距離函數?你會立即看到它更加困難,因爲有許多方法來表示這些點。例如,笛卡爾與徑向,x-y與i-j,double與float與int。我們的一般2D距離需要涵蓋所有這些可能性。
大多數具有2D距離函數的庫都會有相應的點結構來減少可能性的數量。
但是,至少有一個數據結構可以存儲一個點並用於使用標準庫查找二維距離:複數!
// norm example
#include <iostream>
#include <complex>
using namespace std;
int main()
{
complex<double> mycomplex (3.0,4.0);
cout << "The norm of " << mycomplex << " is " << norm(mycomplex) << endl;
return 0;
}
但是,這裏假設你說的是歐氏距離。你也可以談論曼哈頓距離或更具異國情調的指標。語言設計者並沒有試圖說明我提到的所有可能性,而是選擇不實施這個功能。 (或者許多其他許多功能中的任何一個,比如這個人可能會合理地問這個問題)。
編輯: 或者你也可以減去點和C99標準使用hypot
功能。見here。
Boost.Geometry聲稱具有笛卡兒距離和非笛卡爾距離的函數。
- 1. Postgresql:在距離海岸的距離內找到道路端點
- 2. 得到所有距離預測功能
- 3. 距離功能爲Android
- 4. 計算距離的功能
- 5. 找到距離的地理位置
- 6. 使用Google地圖距離矩陣返回距離功能
- 7. 找到最小距離
- 8. 使用Bhattacharyya距離功能選擇
- 9. 查找字符串功能上的歐氏距離
- 10. 距離點到線大圓功能不能正常工作。
- 11. 找到距離源的某個距離處的座標
- 12. 找到距離地點最小總距離的點的算法
- 13. 找到距離get.shortest.paths()的路線的距離
- 14. 計算距離位置的距離 - iPhone
- 15. 按特定距離查找距離目標位置最近的位置
- 16. 在python中使用內置函數查找3d距離
- 17. 使用db2查找特定距離內的位置
- 18. 如何圓一個GeoDjango內置距離
- 19. PDIST不接受內置距離
- 20. Levenstein轉置距離
- 21. 找到最長距離的最小值
- 22. VBA找到excel中列間的距離
- 23. OpenGL找到一個點的距離
- 24. 使用MatLab找到最大距離
- 25. CROSS JOIN在SQL Server中找到距離
- 26. 找到xyz之間的最小距離
- 27. 找到經緯度的距離
- 28. 找到wordnet中synsets之間的距離
- 29. 找到多個點之間的距離
- 30. 如何從距離中找到latlong?
二維空間中有無限多的有效「距離函數」。任何人都應該知道你想要哪一個? –
甚至沒有內置的點數據結構... –
@KerrekSB法國鐵路公制,當然。 –