개요
포물선이 하나 주어져 있다고 가정해 봅시다. 포물선의 꼭짓점 좌표는 (h, k)이며, 초점과 꼭짓점 사이의 거리는 a입니다. 여기에 또 다른 점이 주어졌을 때, 해당 점이 포물선의 내부에 있는지, 외부에 있는지, 아니면 포물선 곡선 위에 있는지 판별하는 것이 이 글의 목표입니다.
이 문제를 해결하려면 주어진 점 (x, y)를 다음 포물선 표준 방정식에 대입하여 값을 계산합니다.
(y-k)² = 4a(x-h)
계산 결과가 0보다 작으면 점은 포물선 내부에 위치하고, 0이면 포물선 위에 있으며, 0보다 크면 포물선 외부에 있습니다.
C++ 구현 예제
#include <iostream>
#include <cmath>
using namespace std;
int isInsideParabola(int h, int k, int x, int y, int a) {
int res = pow((y - k), 2) - 4 * a * (x - h);
return res;
}
int main() {
int x = 2, y = 1, h = 0, k = 0, a = 4;
if(isInsideParabola(h, k, x, y, a) > 0){
cout << "Outside Parabola";
}
else if(isInsideParabola(h, k, x, y, a) == 0){
cout << "On the Parabola";
} else{
cout << "Inside Parabola";
}
}출력 결과
Inside Parabola
코드 설명
isInsideParabola 함수는 포물선의 꼭짓점 좌표 (h, k), 판별할 점의 좌표 (x, y), 그리고 초점과 꼭짓점 사이의 거리 a를 매개변수로 받습니다. 함수 내부에서는 (y-k)² - 4a(x-h) 식을 계산한 뒤 그 결과값을 반환합니다.
main 함수에서는 반환된 값의 부호에 따라 조건문으로 점의 위치를 판별합니다. 예제에서 사용된 입력값은 x=2, y=1, h=0, k=0, a=4이며, 실제 계산 결과는 (1-0)² - 4×4×(2-0) = 1 - 32 = -31로 음수가 나옵니다. 따라서 점 (2, 1)은 포물선 y² = 16x의 내부에 있다는 결론을 얻을 수 있습니다.