두 점을 이용한 직선 방정식 구하기 (C 언어)

CBeginner
지금 연습하기

소개

이 실습에서는 C 프로그래밍에서 두 점을 주어졌을 때 직선의 방정식을 찾는 방법을 배웁니다. 이 실습은 세 가지 주요 단계로 구성됩니다: 두 점으로부터 기울기를 계산하고, 기울기와 알려진 점을 사용하여 y 절편을 계산하고, 마지막으로 y = mx + b 형태의 완전한 직선 방정식을 출력하는 것입니다. 이 실습을 마치면 C 를 사용하여 해석 기하학에서 직선을 다루는 방법에 대한 확실한 이해를 얻게 될 것입니다.

이 실습은 두 점 사이의 기울기를 (y2 - y1) / (x2 - x1) 공식을 사용하여 계산하는 방법을 보여줍니다. 그런 다음 y = mx + b 방정식을 변형하여 상수 b 를 구하여 y 절편을 결정하는 방법을 보여줍니다. 마지막으로 완전한 직선 방정식을 출력하여 표준 형태로 직선을 나타낼 수 있도록 합니다.

두 점으로부터 기울기 계산

이 단계에서는 C 프로그램에서 두 점 사이의 기울기를 계산하는 방법을 배웁니다. 기울기는 직선의 기울기를 나타내며, 다음 공식을 사용하여 계산됩니다: 기울기 = (y2 - y1) / (x2 - x1).

먼저 기울기 계산을 구현하기 위한 새로운 C 파일을 만듭니다.

cd ~/project
nano slope_calculation.c

이제 기울기를 계산하는 다음 C 코드를 작성합니다.

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    // 점들이 같은 수직선 위에 있는지 확인
    if (x2 - x1 == 0) {
        printf("기울기가 정의되지 않음 (수직선)\n");
        return 0;
    }

    // 공식 (y2 - y1) / (x2 - x1) 을 사용하여 기울기 계산
    float slope = (y2 - y1) / (x2 - x1);
    return slope;
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // 첫 번째 점
    float x2 = 5.0, y2 = 7.0;  // 두 번째 점

    float slope = calculate_slope(x1, y1, x2, y2);

    printf("점 1: (%.1f, %.1f)\n", x1, y1);
    printf("점 2: (%.1f, %.1f)\n", x2, y2);
    printf("기울기: %.2f\n", slope);

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc slope_calculation.c -o slope_calculation
./slope_calculation

예시 출력:

점 1: (2.0, 3.0)
점 2: (5.0, 7.0)
기울기: 1.33

코드를 자세히 살펴보겠습니다.

  1. calculate_slope() 함수는 네 개의 매개변수 (x1, y1, x2, y2) 를 받습니다.
  2. 먼저 점들이 수직선을 만드는지 확인합니다 (x2 - x1 = 0).
  3. 수직선이 아니면 표준 공식을 사용하여 기울기를 계산합니다.
  4. main() 함수는 기울기 계산을 사용하는 방법을 보여줍니다.

기울기는 두 점 사이의 x 좌표 변화량에 대한 y 좌표 변화량을 나타냅니다. 이 예제에서 기울기는 약 1.33 입니다. 즉, x 가 1 단위 변화할 때마다 y 는 1.33 단위 변화합니다.

y - mx 를 이용한 절편 계산

이 단계에서는 기울기와 알려진 점을 사용하여 직선의 y 절편을 계산하는 방법을 배웁니다. y 절편은 직선이 y 축과 교차하는 점이며, 다음 방정식을 사용하여 계산할 수 있습니다: b = y - mx.

같은 프로젝트 디렉토리에서 작업을 계속하고 이전 C 파일을 수정합니다.

cd ~/project
nano line_equation.c

y 절편을 계산하는 다음 C 코드를 작성합니다.

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    if (x2 - x1 == 0) {
        printf("기울기가 정의되지 않음 (수직선)\n");
        return 0;
    }
    return (y2 - y1) / (x2 - x1);
}

float calculate_intercept(float x, float y, float slope) {
    // 공식 b = y - mx 를 사용하여 y 절편 계산
    float intercept = y - (slope * x);
    return intercept;
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // 첫 번째 점
    float x2 = 5.0, y2 = 7.0;  // 두 번째 점

    float slope = calculate_slope(x1, y1, x2, y2);
    float intercept = calculate_intercept(x1, y1, slope);

    printf("점 1: (%.1f, %.1f)\n", x1, y1);
    printf("점 2: (%.1f, %.1f)\n", x2, y2);
    printf("기울기: %.2f\n", slope);
    printf("Y 절편: %.2f\n", intercept);

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc line_equation.c -o line_equation
./line_equation

예시 출력:

점 1: (2.0, 3.0)
점 2: (5.0, 7.0)
기울기: 1.33
Y절편: 0.33

새 코드를 자세히 살펴보겠습니다.

  1. calculate_intercept() 함수는 세 개의 매개변수 (x, y, 기울기) 를 받습니다.
  2. 공식 b = y - mx 를 사용하여 y 절편을 계산합니다.
  3. main() 함수에서 이전에 계산된 기울기와 한 점을 사용하여 y 절편을 찾습니다.
  4. y 절편은 x = 0 일 때 직선이 y 축과 교차하는 지점을 나타냅니다.

계산 결과, 주어진 점에 대해 직선의 기울기는 1.33 이고 y 절편은 0.33 임을 보여줍니다.

y = mx + b 형태의 직선 방정식 출력

이 단계에서는 이전 단계에서 계산한 기울기와 y 절편을 사용하여 완전한 직선 방정식을 출력하는 방법을 배웁니다. 기존 C 프로그램을 수정하여 표준 형태인 y = mx + b 의 직선 방정식을 표시할 것입니다.

같은 프로젝트 디렉토리에서 작업을 계속합니다.

cd ~/project
nano line_equation_final.c

직선 방정식을 출력하는 다음 C 코드를 작성합니다.

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    if (x2 - x1 == 0) {
        printf("기울기가 정의되지 않음 (수직선)\n");
        return 0;
    }
    return (y2 - y1) / (x2 - x1);
}

float calculate_intercept(float x, float y, float slope) {
    return y - (slope * x);
}

void print_line_equation(float slope, float intercept) {
    printf("직선 방정식: y = ");

    // 기울기 계수 출력
    if (slope == 1) {
        printf("x");
    } else if (slope == -1) {
        printf("-x");
    } else if (slope != 0) {
        printf("%.2fx", slope);
    }

    // 절편 출력
    if (intercept > 0) {
        printf(" + %.2f", intercept);
    } else if (intercept < 0) {
        printf(" - %.2f", -intercept);
    }

    printf("\n");
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // 첫 번째 점
    float x2 = 5.0, y2 = 7.0;  // 두 번째 점

    float slope = calculate_slope(x1, y1, x2, y2);
    float intercept = calculate_intercept(x1, y1, slope);

    printf("점 1: (%.1f, %.1f)\n", x1, y1);
    printf("점 2: (%.1f, %.1f)\n", x2, y2);
    printf("기울기: %.2f\n", slope);
    printf("Y 절편: %.2f\n", intercept);

    print_line_equation(slope, intercept);

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc line_equation_final.c -o line_equation_final
./line_equation_final

예시 출력:

점 1: (2.0, 3.0)
점 2: (5.0, 7.0)
기울기: 1.33
Y절편: 0.33
직선 방정식: y = 1.33x + 0.33

새 코드를 자세히 살펴보겠습니다.

  1. print_line_equation() 함수는 기울기와 절편의 다양한 경우를 처리합니다.
  2. 기울기가 1, -1 또는 0 인 특수한 경우를 처리합니다.
  3. 절편의 부호를 올바르게 표시하여 방정식을 형식화합니다.
  4. 함수는 직선 방정식을 깔끔하고 읽기 쉽게 표현합니다.

이 코드는 점과 기울기 정보를 표준 선형 방정식 형식으로 변환하는 방법을 보여줍니다.

요약

이 실험에서 먼저 두 점 사이의 기울기를 (y2 - y1) / (x2 - x1) 공식을 사용하여 계산하는 방법을 배웠습니다. 이는 직선의 기울기를 나타냅니다. 그런 다음 기울기와 알려진 점을 사용하여 직선의 y 절편을 계산하는 방법을 배웠습니다. 이는 방정식 y = mx + b 를 변형하여 b 를 구하는 것입니다. 마지막으로 기울기와 절편을 결합하여 y = mx + b 형태의 직선의 완전한 방정식을 출력했습니다.