21xrx.com
2024-06-03 04:48:10 Monday
登录
文章检索 我的文章 写文章
如何在C++中求两个点之间的距离?
2023-07-12 02:44:50 深夜i     --     --
C++ 两个点 距离

在C++中计算两个点之间的距离可能是很常见的需求,不管是算法题目还是实际开发中都有类似的应用。在本文中,我们将会讨论两个点之间距离的几种计算方法和C++代码实现。

方法一:欧几里得距离

欧几里得距离是求两个点之间距离最常见的方法之一。它在平面直角坐标系中的计算公式如下:

d = sqrt((x2-x1)^2 + (y2-y1)^2)

其中x1、y1和x2、y2分别是两个点的坐标,d代表两个点之间的距离。在C++代码中,可使用数学库函数sqrt()来计算根号值,实现起来很简单。比如:

#include

#include

using namespace std;

int main()

{

  int x1, y1, x2, y2; // 定义两个点的坐标

  double distance; // 定义距离变量

  cout << "请输入第一个点的坐标:";

  cin >> x1 >> y1;

  cout << "请输入第二个点的坐标:";

  cin >> x2 >> y2;

  distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)); // 计算距离

  cout << "两个点之间的距离是:" << distance << endl;

  return 0;

}

方法二:曼哈顿距离

曼哈顿距离又称为街区距离,也是常见的两点距离计算方法。它在平面直角坐标系中的计算公式如下:

d = abs(x2-x1) + abs(y2-y1)

其中abs()表示求一个数的绝对值,在C++中可直接使用。同样的,计算曼哈顿距离的代码非常简单:

#include

#include

using namespace std;

int main()

{

  int x1, y1, x2, y2; // 定义两个点的坐标

  double distance; // 定义距离变量

  cout << "请输入第一个点的坐标:";

  cin >> x1 >> y1;

  cout << "请输入第二个点的坐标:";

  cin >> x2 >> y2;

  distance = abs(x2 - x1) + abs(y2 - y1); // 计算距离

  cout << "两个点之间的距离是:" << distance << endl;

  return 0;

}

方法三:切比雪夫距离

切比雪夫距离是一种更为通用的距离计算方法,它在平面直角坐标系中的计算公式如下:

d = max(abs(x2-x1), abs(y2-y1))

其中max()表示求两个数的较大值。和前两种方法不同的是,切比雪夫距离可以处理四个方向(上、下、左、右)的移动,而不是只考虑对角线方向。同样的,C++代码实现也比较简单:

#include

#include

using namespace std;

int main()

{

  int x1, y1, x2, y2; // 定义两个点的坐标

  double distance; // 定义距离变量

  cout << "请输入第一个点的坐标:";

  cin >> x1 >> y1;

  cout << "请输入第二个点的坐标:";

  cin >> x2 >> y2;

  distance = max(abs(x2 - x1), abs(y2 - y1)); // 计算距离

  cout << "两个点之间的距离是:" << distance << endl;

  return 0;

}

结语

通过上述三种方法,我们可以在C++中准确地计算两个点之间的距离。在实际开发中,根据需求选择合适的计算方法,会使程序的运行效率更高。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复