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

C 언어로 3차원 공간에서 두 점 사이의 거리 계산하기


3차원 공간에 놓인 두 점의 좌표가 주어졌을 때, 두 점 사이의 거리를 계산하여 그 결과를 화면에 출력하는 것이 이번 예제의 목표입니다.

3차원 거리 계산 공식

3차원 공간에는 x축, y축, z축의 세 축이 존재하며, 각 점은 (x1, y1, z1), (x2, y2, z2)와 같이 세 개의 좌표 성분으로 표현됩니다. 두 점 사이의 거리는 다음과 같은 유클리드 거리 공식을 사용해 바로 계산할 수 있습니다.

거리 = √((x2 − x1)² + (y2 − y1)² + (z2 − z1)²)

즉, 각 축 방향의 좌표 차이를 제곱한 뒤 모두 더하고, 그 합의 제곱근을 구하면 됩니다. 아래 그림은 3차원 공간의 세 축과 좌표를 나타낸 것입니다.

C 언어로 3차원 공간에서 두 점 사이의 거리 계산하기

문제 해결 접근 방법

  • 두 점의 좌표 (x1, y1, z1)와 (x2, y2, z2)를 입력값으로 받습니다.
  • 위 공식을 적용해 두 점 사이의 거리를 계산합니다.
  • 계산된 거리 값을 출력합니다.

알고리즘

시작
1단계 → 두 점 사이의 거리를 계산하는 함수 선언
    void three_dis(float x1, float y1, float z1, float x2, float y2, float z2)
        float dis = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2) + pow(z2 - z1, 2) * 1.0) 대입
        dis 출력
2단계 → main() 함수 내부
        float x1 = 4
        float y1 = 9
        float z1 = -3
        float x2 = 5
        float y2 = 10
        float z2 = 9
        three_dis(x1, y1, z1, x2, y2, z2) 호출
종료

C 언어 예제 코드

#include <stdio.h>
#include <math.h>

// 두 점 사이의 거리를 구하는 함수
void three_dis(float x1, float y1, float z1, float x2, float y2, float z2) {
    float dis = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2) + pow(z2 - z1, 2) * 1.0);
    printf("두 점 사이의 거리 : %f", dis);
    return;
}

int main() {
    float x1 = 4;
    float y1 = 9;
    float z1 = -3;
    float x2 = 5;
    float y2 = 10;
    float z2 = 9;

    three_dis(x1, y1, z1, x2, y2, z2);
    return 0;
}

코드 설명

이 코드에서 사용된 주요 요소는 다음과 같습니다.

  • pow(a, b) : math.h 헤더 파일에 정의된 함수로, a의 b제곱을 계산합니다. 여기서는 각 축 좌표 차이의 제곱을 구하는 데 사용됩니다.
  • sqrt(n) : 인자로 전달된 값의 제곱근을 반환합니다. 계산 과정에서 * 1.0을 곱해 부동소수점 연산임을 명확히 합니다.
  • three_dis() : 여섯 개의 좌표 값을 매개변수로 받아 거리를 계산하고, printf()로 결과를 출력하는 사용자 정의 함수입니다.

실행 결과

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

두 점 사이의 거리 : 12.083046

점 (4, 9, −3)과 점 (5, 10, 9) 사이의 거리는 √146 ≈ 12.083046으로 계산됩니다.