点和圆的关系
- #include <iostream>
- using namespace std;
- class Point//设计点的类
- {
- private://点的属性
- int m_x;
- int m_y;
- public:
- void initPoint(int x, int y)//初始化点的方法
- {
- m_x = x;
- m_y = y;
- }
- void setX(int x)//设置x坐标
- {
- m_x = x;
- }
- void setY(int y)//设置y坐标
- {
- m_y = y;
- }
- void pointInfo(void)//输出点的信息
- {
- cout << “(” << m_x << “,” << m_y << “)” ;
- }
- int getX(void)//输出x坐标
- {
- return m_x;
- }
- int getY(void)//输出y坐标
- {
- return m_y;
- }
- };
- class Circle//设计圆的类
- {
- private://圆的属性
- Point m_p;//类的嵌套,使用到了点的类
- int m_r;
- public:
- void initCircle(Point p, int r)//初始化一个圆,要传递一个点的数据作为圆心和一个半径的数据
- {
- m_p = p;
- m_r = r;
- }
- void setR(int r)//设置半径
- {
- m_r = r;
- }
- void setPoint(Point p)//设置圆心
- {
- m_p = p;
- }
- int getR(void)//返回半径
- {
- return m_r;
- }
- void getCircle(void)//返回一个圆的数据
- {
- cout << “以”;
- m_p.pointInfo();
- cout << “为圆心,”;
- cout << “半径为” << m_r ;
- }
- void isPointOnCircle(Point &po)//判断一个点与圆的位置关系
- {
- if((po.getX()-m_p.getX())*(po.getX()-m_p.getX())+(po.getY()-m_p.getY())*(po.getY()-m_p.getY()) < m_r*m_r)
- {cout << “点” ;
- po.pointInfo();
- cout << “在”;
- getCircle();
- cout << “的圆内部” << endl;}
- else if((po.getX()-m_p.getX())*(po.getX()-m_p.getX())+(po.getY()-m_p.getY())*(po.getY()-m_p.getY()) == m_r*m_r)
- {cout << “点” ;
- po.pointInfo();
- cout << “在”;
- getCircle();
- cout << “的圆上” << endl;}
- else
- {cout << “点” ;
- po.pointInfo();
- cout << “在”;
- getCircle();
- cout << “的圆外” << endl;}
- }
- };
- int main()
- {
- Point a;//初始化一个点
- a.setX(10);
- a.setY(10);
- Circle aa;//用a和半径初始化一个圆
- aa.initCircle(a, 10);
- Point b;
- b.setX(0);
- b.setY(10);
- Point c;
- c.setX(5);
- c.setY(5);
- Point d;
- d.setX(30);
- d.setY(30);
- aa.isPointOnCircle(b);//使用圆中的方法判断一个点与圆的位置关系
- aa.isPointOnCircle(c);
- aa.isPointOnCircle(d);
- return 0;
- }