内置功能找到距离
回答
好了,你可以在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法国铁路公制,当然。 –