C++笔记4.05

点和圆的关系

  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. class Point//设计点的类  
  6. {  
  7. private://点的属性  
  8.     int m_x;  
  9.     int m_y;  
  10. public:  
  11.     void initPoint(int x, int y)//初始化点的方法  
  12.     {  
  13.         m_x = x;  
  14.         m_y = y;  
  15.     }  
  16.   
  17.     void setX(int x)//设置x坐标  
  18.     {  
  19.         m_x = x;  
  20.     }  
  21.   
  22.     void setY(int y)//设置y坐标  
  23.     {  
  24.         m_y = y;  
  25.     }  
  26.   
  27.     void pointInfo(void)//输出点的信息  
  28.     {  
  29.         cout << “(” << m_x << “,” << m_y << “)” ;  
  30.     }  
  31.     int getX(void)//输出x坐标  
  32.     {  
  33.         return m_x;  
  34.     }  
  35.   
  36.     int getY(void)//输出y坐标  
  37.     {  
  38.         return m_y;  
  39.     }  
  40. };  
  41.   
  42. class Circle//设计圆的类  
  43. {  
  44. private://圆的属性  
  45.     Point m_p;//类的嵌套,使用到了点的类  
  46.     int m_r;  
  47. public:  
  48.     void initCircle(Point p, int r)//初始化一个圆,要传递一个点的数据作为圆心和一个半径的数据  
  49.     {  
  50.         m_p = p;  
  51.         m_r = r;  
  52.     }  
  53.   
  54.     void setR(int r)//设置半径  
  55.     {  
  56.         m_r = r;  
  57.     }  
  58.   
  59.     void setPoint(Point p)//设置圆心  
  60.     {  
  61.         m_p = p;  
  62.     }  
  63.   
  64.     int getR(void)//返回半径  
  65.     {  
  66.         return m_r;  
  67.     }  
  68.   
  69.     void getCircle(void)//返回一个圆的数据  
  70.     {  
  71.         cout << “以”;  
  72.         m_p.pointInfo();  
  73.         cout << “为圆心,”;  
  74.         cout << “半径为” << m_r ;  
  75.     }  
  76.   
  77.     void isPointOnCircle(Point &po)//判断一个点与圆的位置关系  
  78.     {  
  79.         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)  
  80.         {cout << “点” ;  
  81.          po.pointInfo();  
  82.          cout << “在”;  
  83.          getCircle();  
  84.          cout << “的圆内部” << endl;}  
  85.         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)  
  86.         {cout << “点” ;  
  87.          po.pointInfo();  
  88.          cout << “在”;  
  89.          getCircle();  
  90.          cout << “的圆上” << endl;}  
  91.         else  
  92.         {cout << “点” ;  
  93.          po.pointInfo();  
  94.          cout << “在”;  
  95.          getCircle();  
  96.          cout << “的圆外” << endl;}  
  97.     }  
  98. };  
  99.   
  100. int main()  
  101. {  
  102.     Point a;//初始化一个点  
  103.     a.setX(10);  
  104.     a.setY(10);  
  105.   
  106.     Circle aa;//用a和半径初始化一个圆  
  107.     aa.initCircle(a, 10);  
  108.   
  109.     Point b;  
  110.     b.setX(0);  
  111.     b.setY(10);  
  112.   
  113.     Point c;  
  114.     c.setX(5);  
  115.     c.setY(5);  
  116.   
  117.     Point d;  
  118.     d.setX(30);  
  119.     d.setY(30);  
  120.   
  121.     aa.isPointOnCircle(b);//使用圆中的方法判断一个点与圆的位置关系  
  122.     aa.isPointOnCircle(c);  
  123.     aa.isPointOnCircle(d);  
  124.     return 0;  
  125. }  

发表评论

邮箱地址不会被公开。 必填项已用*标注