代码效果
本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码:
VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码)
教程描述
本示例演示求两个 3D 点之间的平方距离和欧几里得距离。
欧几里得距离算法:通常指的是在欧几里得空间中计算两点之间的直线距离,这种距离度量适用于有限维实数空间,如二维或三维空间。其计算公式如下:
对于二维空间,公式是(dis= \sqrt{(x1-x2)^2 + (y1-y2)^2} )。
对于三维空间,公式是(dis= \sqrt{(x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2} )。
对于n维空间,公式是(d(A,B) = \sqrt{\sum_{i=1}^{n} (a[i] - b[i] )^2} ),其中A和B是两个n维空间中的点,(a[i])和(b[i])分别是这两个点的第i个坐标。
欧几里得距离的一个特点是它不受量纲的影响,可以排除变量之间相关性的干扰。
完整源码
#include <vtkMath.h>
int main(int, char*[])
{
// 创建两个三维点
double p0[3] = {
0.0, 0.0, 0.0 };
double p1[3] = {
1.0, 1.0, 1.0 };
// 求出点之间距离的平方
double squaredDistance = vtkMath::Distance2BetweenPoints(p0, p1);
// 取平方根得到点之间的欧几里得距离
double distance = std::sqrt(squaredDistance);
// 输出结果
std::cout << "p0:{" << p0[0] << "," << p0[1] << "," << p0[2] << "}" << std::endl;
std::cout << "p1:{" << p1[0] << "," << p1[1] << "," << p1[2] << "}" << std::endl;
std::cout << "平方距离 = " << squaredDistance << std::endl;
std::cout << "欧几里得距离 = " << distance << std::endl << std::endl;
system("pause");
return EXIT_SUCCESS;
}
笔者
笔者 - jxd
文章评论