C++에서 두 점 사이의 거리 계산
이 기사에서는 C++에서 두 점 사이의 거리를 계산하는 방법을 소개합니다.
std::sqrt
및std::pow
함수를 사용하여 C++에서 두 점 사이의 거리 계산
일반적으로 피타고라스 정리를 적용하여 두 점 사이의 거리를 계산할 수 있습니다. 따라서 두 점의x
및y
매개 변수를 알고 있다면 두 점 사이의 거리는 수평 및 수직 거리의 합에서 제곱근과 같으며 각각2
의 거듭 제곱으로 올립니다. 수평 및 수직 거리 자체는 후자가 빗변 인 두 점을 연결하는 선 주위에 직각 삼각형을 구성하여 쉽게 계산할 수 있습니다.
이 경우,std
네임 스페이스 아래에서 C++에서 사용할 수있는 C 표준 수학 라이브러리 함수, 즉 주어진 인수의 제곱근을 계산하는sqrt
함수와 주어진 값으로 올린 수를 계산하는pow
를 사용합니다. 이 두 함수는 모두 부동 소수점 숫자를float
또는double
유형으로 반환합니다.
#include <cmath>
#include <iomanip>
#include <iostream>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::vector;
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;
}
출력:
Distance between points (3, 4) and (4, 3) is 1.41421
다음 예제 코드에 설명 된대로 부동 소수점 숫자로 표시된 좌표가있는 점에 대해 함수의 오버로드 된 변형을 구현할 수 있습니다.
#include <cmath>
#include <iomanip>
#include <iostream>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::vector;
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;
}
출력:
Distance between points (4, 4.5) and (9, 4.5) is 5
std::hypot
함수를 사용하여 C++에서 두 점 사이의 거리 계산
또는 수학 라이브러리 함수 인std::hypot
을 사용하여 두 개 또는 세 개의 숫자 제곱합의 제곱근을 계산할 수 있습니다. 이 방법은 최종 사용자가 직접 구현하기 어려운 강력한 구현 및 오류보고를 보장하므로 거리를 계산하는 데 권장되는 방법입니다. 해당 좌표의 차이를 인수로 전달하고 반환 값을 계산 결과로 사용해야합니다.
#include <cmath>
#include <iomanip>
#include <iostream>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::vector;
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;
}
출력:
Distance between points (4, 4.5) and (9, 4.5) is 5
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook