Calculate Distance Between Two Points in C++

  1. Use std::sqrt and std::pow Functions to Calculate Distance Between Two Points in C++
  2. Use the std::hypot Function to Calculate Distance Between Two Points in C++

This article will introduce how to calculate distance between two points in C++.

Use std::sqrt and std::pow Functions to Calculate Distance Between Two Points in C++

Generally, we can calculate the distance between two points by applying the Pythagorean theorem. So, if we know x and y parameters of two points, the distance between them equals the square root from the sum of horizontal and vertical distances, each raised to the power of 2. Horizontal and vertical distances themselves can be easily calculated by constructing a right-angled triangle around the line connecting the two points, where the latter is the hypotenuse.

In this case, we utilize C standard math library functions available in C++ under the std namespace, namely, the sqrt function that computes the square root of the given argument and pow, which calculates the number raised to the given power. Note that both of these functions return floating-point numbers as float or double types.

#include <iostream>
#include <vector>
#include <iomanip>
#include <cmath>

using std::cout; using std::endl;
using std::vector; using std::copy;

double calculateDistance(std::pair<int, int> &x, std::pair<int, int> &y)
{
    return sqrt(pow(x.first - y.first, 2) +
                pow(x.second - y.second, 2));
}

double calculateDistance(std::pair<double, double> &x, std::pair<double, double> &y)
{
    return sqrt(pow(x.first - y.first, 2) +
                pow(x.second - y.second, 2));
}

int main() {
    vector<std::pair<int, int>> vec =
                                { {3, 4},
                                {4, 3}, };

    cout << "Distance between points (" << vec[0].first << ", "
        << vec[0].second << ") and ("  << vec[1].first << ", "
        << vec[1].second << ") is " << calculateDistance(vec[0], vec[1]) << endl;

    return EXIT_SUCCESS;
}

Output:

Distance between points (3, 4) and (4, 3) is 1.41421

Notice that we can implement an overloaded variant of the function for points with coordinates represented with floating-point numbers, as demonstrated in the following example code.

#include <iostream>
#include <vector>
#include <iomanip>
#include <cmath>

using std::cout; using std::endl;
using std::vector; using std::copy;

double calculateDistance(std::pair<int, int> &x, std::pair<int, int> &y)
{
    return sqrt(pow(x.first - y.first, 2) +
                pow(x.second - y.second, 2));
}

double calculateDistance(std::pair<double, double> &x, std::pair<double, double> &y)
{
    return sqrt(pow(x.first - y.first, 2) +
                pow(x.second - y.second, 2));
}

int main() {
    vector<std::pair<double, double>> vec2 =
                                { {4.0, 4.5},
                                  {9.0, 4.5}, };

    cout << "Distance between points (" << vec2[0].first << ", "
         << vec2[0].second << ") and ("  << vec2[1].first << ", "
         << vec2[1].second << ") is " << calculateDistance(vec2[0], vec2[1]) << endl;

    return EXIT_SUCCESS;
}

Output:

Distance between points (4, 4.5) and (9, 4.5) is 5

Use the std::hypot Function to Calculate Distance Between Two Points in C++

Alternatively, we can use a math library function - std::hypot which calculates the square root of the sum of the squares of two or three numbers. This method is recommended way to calculated the distance as it guarantees the robust implementation and error reporting that would be harder for the end-user to implement on her own. Notice that we need to pass the difference of corresponding coordinates as arguments and use the return value as the calculation result.

#include <iostream>
#include <vector>
#include <iomanip>
#include <cmath>

using std::cout; using std::endl;
using std::vector; using std::copy;

int main() {
    vector<std::pair<double, double>> vec2 =
                                { {4.0, 4.5},
                                  {9.0, 4.5}, };

    cout << "Distance between points (" << vec2[0].first << ", "
         << vec2[0].second << ") and ("  << vec2[1].first << ", "
         << vec2[1].second << ") is "
         << std::hypot(vec2[0].first - vec2[1].first, vec2[0].second - vec2[1].second)
         << endl;

    return EXIT_SUCCESS;
}

Output:

Distance between points (4, 4.5) and (9, 4.5) is 5
Contribute
DelftStack is a collective effort contributed by software geeks like you. If you like the article and would like to contribute to DelftStack by writing paid articles, you can check the write for us page.

Related Article - C++ Math

  • Raise Number to Power in C++
  • Generate Fibonacci Numbers in C++