이번 글에서는 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가 음수이면 포물선은 아래로 열립니다. 이처럼 일반 방정식의 계수만 알면 별도의 그래프 작업 없이도 포물선의 기하학적 성질을 코드 한 번으로 손쉽게 계산할 수 있습니다.