21xrx.com
2024-11-22 02:48:46 Friday
登录
文章检索 我的文章 写文章
C++实现圆内点的判断
2023-07-11 13:36:39 深夜i     --     --
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;

}

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复