21xrx.com
2025-06-12 15:32:20 Thursday
文章检索 我的文章 写文章
C++实现圆内点的判断
2023-07-11 13:36:39 深夜i     30     0
C++ 内点 判断

在C++中,判断一个点是否在一个圆内是一个常见的问题。假设我们有一个圆,圆心坐标为(x,y),半径为r。我们想知道一个点,坐标为(a,b),是否在这个圆内。下面介绍两种方法来判断点是否在圆内。

方法一

首先,我们可以使用勾股定理来计算圆心到点的距离d。公式为:

d = sqrt((a - x) * (a - x) + (b - y) * (b - y))

然后,我们比较d与r的大小关系。如果d小于等于r,那么点就在圆内;如果d大于r,那么点就在圆外。代码如下:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
  double x, y, r; // 圆心坐标和半径
  double a, b;  // 点的坐标
  cin >> x >> y >> r >> a >> b;
  double d = sqrt((a - x) * (a - x) + (b - y) * (b - y)); // 计算距离
  if (d <= r)
    cout << "The point is in the circle" << endl;
   else
    cout << "The point is not in the circle" << endl;
  
  return 0;
}

方法二

另一种方法是使用圆方程。圆方程的一般式为:

(x - a)² + (y - b)² = r²

其中,(a,b)是圆心坐标,r是半径。如果一个点位于圆内,那么代入圆方程时,左边的值应该小于等于r²。如果一个点位于圆外,那么左边的值应该大于r²。代码如下:

#include <iostream>
using namespace std;
int main()
{
  double x, y, r; // 圆心坐标和半径
  double a, b;  // 点的坐标
  cin >> x >> y >> r >> a >> b;
  double distance = (a - x) * (a - x) + (b - y) * (b - y);
  if (distance <= r * r)
    cout << "The point is in the circle" << endl;
   else
    cout << "The point is not in the circle" << endl;
  
  return 0;
}

以上两种方法都可以正确地判断一个点是否在一个圆内。在实际应用中,可以根据具体情况选择其中一种方法使用。

  
  

评论区