Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그램으로 두 점 사이의 거리 계산하기

두 점의 좌표가 주어졌을 때, 두 점 사이의 거리를 계산하여 결과를 화면에 출력하는 것이 이번 글의 목표입니다.

두 점 사이의 거리 공식

2차원 평면 위에 A(x₁, y₁)와 B(x₂, y₂)라는 두 점이 있다고 가정해 보겠습니다. 이때 두 점 사이의 거리는 다음과 같은 직선 거리(유클리드 거리) 공식으로 간단하게 구할 수 있습니다.

$$\sqrt{\lgroup x2-x1\rgroup^{2}+\lgroup y2-y1\rgroup^{2}}$$

즉, 두 점의 x좌표 차이와 y좌표 차이를 각각 제곱한 뒤 더하고, 그 값의 제곱근을 구하면 됩니다.

아래 그림은 두 점과 각 좌표의 차이를 나타낸 것입니다.

$$\frac{(x_2-x_1)}{(x_1,y_1)\:\:\:\:\:\:(y_2-y_1)\:\:\:\:\:\:(x_2,y_2)}$$

문제 해결 접근 방법

  • x1, x2, y1, y2 네 개의 좌표 값을 입력받습니다.
  • 위의 거리 공식을 적용하여 두 점 사이의 거리를 계산합니다.
  • 계산된 거리를 출력합니다.

알고리즘

Start
Step 1-> declare function to calculate distance between two point
    void three_dis(float x1, float y1, float x2, float y2)
      set float dis = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2) * 1.0)
      print dis
step 2-> In main()
    Set float x1 = 4
    Set float y1 = 9
    Set float x2 = 5
    Set float y2 = 10
    Call two_dis(x1, y1, x2, y2)
Stop

C 언어 예제 코드

#include <stdio.h>
#include<math.h>
//function to find distance bewteen 2 points
void two_dis(float x1, float y1, float x2, float y2) {
    float dis = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2) * 1.0);
    printf("Distance between 2 points are : %f", dis);
    return;
}
int main() {
    float x1 = 4;
    float y1 = 9;
    float x2 = 5;
    float y2 = 10;
    two_dis(x1, y1, x2, y2);
    return 0;
}

코드를 살펴보면 two_dis 함수가 네 개의 좌표 값을 매개변수로 받아, pow() 함수로 각 좌표 차이를 제곱하고 sqrt() 함수로 제곱근을 구해 거리를 계산합니다. math.h 헤더 파일을 포함해야 이 수학 함수들을 사용할 수 있습니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Distance between 2 points are : 1.414214

점 (4, 9)와 점 (5, 10) 사이의 거리는 약 1.414214, 즉 √2입니다. x좌표와 y좌표가 각각 1씩 차이나기 때문에 대각선 길이가 √2가 되는 것을 확인할 수 있습니다.