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

C/C++로 포물선의 꼭짓점, 초점, 준선 구하는 프로그램 만들기

이번 글에서는 C 또는 C++ 프로그램을 이용해 포물선의 꼭짓점(vertex), 초점(focus), 준선(directrix)을 구하는 방법을 알아보겠습니다. 이 세 가지 요소를 계산하려면 먼저 포물선의 일반 방정식을 이해해야 합니다.

포물선의 일반 방정식

y = ax2 + bx + c

여기서 계수 a, b, c의 값은 이미 주어져 있다고 가정합니다. 이 일반식으로부터 아래 공식들을 통해 포물선의 핵심 요소를 모두 구할 수 있습니다.

1. 꼭짓점(Vertex)

x = -b / (2a)
y = (4ac - b2) / (4a)

2. 초점(Focus)

( -b / (2a), (4ac - b2 + 1) / (4a) )

3. 준선(Directrix)

y = (4ac - b2 - 1) / (4a)

C/C++ 구현 예제

#include <bits/stdc++.h>
using namespace std;

void getParabolaDetails(float a, float b, float c) {
    cout << "꼭짓점: (" << (-b / (2 * a)) << ", " << (((4 * a * c) - (b * b)) / (4 * a)) << ")" << endl;
    cout << "초점: (" << (-b / (2 * a)) << ", " << (((4 * a * c) - (b * b) + 1) / (4 * a)) << ")" << endl;
    cout << "준선: y = " << (((4 * a * c) - (b * b) - 1) / (4 * a)) << endl;
}

int main() {
    float a = 10, b = 3, c = 4;
    getParabolaDetails(a, b, c);
    return 0;
}

실행 결과

꼭짓점: (-0.15, 3.775)
초점: (-0.15, 3.8)
준선: y = 3.75

동작 원리 설명

예제에서는 a = 10, b = 3, c = 4를 대입했습니다. 각 결과가 어떻게 도출되는지 단계별로 살펴보겠습니다.

  • 꼭짓점의 x좌표: -b / (2a) = -3 / 20 = -0.15
  • 꼭짓점의 y좌표: (4 × 10 × 4 − 32) / 40 = 151 / 40 = 3.775
  • 초점: 꼭짓점보다 1 / (4a) = 0.025만큼 위에 있으므로 y = 3.8
  • 준선: 꼭짓점보다 1 / (4a)만큼 아래에 있는 수평 직선 y = 3.75

a가 양수이면 포물선은 위로 열리며, 초점은 꼭짓점 위쪽에, 준선은 꼭짓점 아래쪽에 위치합니다. 반대로 a가 음수이면 포물선은 아래로 열립니다. 이처럼 일반 방정식의 계수만 알면 별도의 그래프 작업 없이도 포물선의 기하학적 성질을 코드 한 번으로 손쉽게 계산할 수 있습니다.