检查点在C ++中是在抛物线的内部,外部还是在抛物线之上

假设给出了一个抛物线(顶点坐标(h,k),距焦点和顶点的距离为a),还给出了另一点。我们必须找到该点是否在抛物线内。为了解决这个问题,我们必须针对给定的点(x,y)解决以下方程式

\ left(yk \ right)^ 2 = 4a \ left(xh \ right)

如果结果小于0,则它在抛物线内部,如果为0,则在抛物线上;如果结果大于0,则在抛物线之外。

示例

#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