C++判断一个点是否在圆内的方法

时间:2021-12-12 01:02:11

本文为大家分享了C++如何判断一个点是否在圆内的方法,供大家参考,具体内容如下

圆的头文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef __CRICLE_H__
#define __CRICLE_H__
#include "point.h"
class Circle
{
public:
  //创建圆
  void init(int r, int x, int y);
  //判断点是否在 当前圆 内
  bool inCircle(Point &p);
private:
  Point _c;
  int _r;
};
 
#endif// __CRICLE_H__

点的头文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef __POINT_H__
#define __POINT_H__
 
class Point
{
public:
  //创建点
  void init(int x, int y);
  //测一个点和当前点的距离的平方
  int distance(Point &p);
private:
  int _x;
  int _y;
};
 
#endif//__POINT_H__

圆的源文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "circle.h"
 
void Circle::init(int r, int x, int y)
{
  _r = r;
  _c.init(x, y);
}
 
bool Circle::inCircle(Point &p)
{
  //计算点p和 当前圆圆心c 的距离
  int dis = p.distance(_c);
 
  //和半径比较
  if (dis <= _r*_r)
    return true;
  else
    return false;
}

点的源文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "point.h"
 
void Point::init(int x, int y)
{
  _x = x;
  _y = y;
}
 
int Point::distance(Point &p)
{
  int dis = (_x-p._x)*(_x-p._x)
    + (_y-p._y)*(_y-p._y);
 
  return dis;
}

main文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include "circle.h"
#include "point.h"
using namespace std;
 
int main()
{
  //一个点
  Point p;
  p.init(1,2);
 
  Circle c;
  c.init(3, 0, 0);
 
  if (c.inCircle(p))
    cout << "在圆内" << endl;
  else
    cout << "在圆外" << endl;
 
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_41093451/article/details/79547895