C++类的应用、查看点和圆的关系、1、在圆上 2、在圆内 3、在圆外

#include <iostream>
 
using namespace std;

//点的类
class Point{

    //两个私有属性
    private:
        int m_X;
        int m_Y;
    
    //公共方法给点的  x和y两个属性赋值和取值
    public:
        //设置x
        void setX(int x){
            m_X = x; 
        };

        //获取x
        int getX(){
            return m_X;
        };

        //设置y
        void setY(int y){
            m_Y = y; 
        };

        //获取y
        int getY(){
            return m_Y;
        };
};

//圆的类
class Circle{

    //半径属性、和圆心,其中圆心也是一个点、他是点这个类的对象。是这个题的重点
    private: 
        int m_R;   //半径
  
  //重点、 圆类的圆心属性本质上是一个点、点是一个类、这里面使用Point类作为类型。
        Point m_Center;   //圆心
    
    public:
    //设置半径
    void setR(int r){
        m_R = r;
    };

    //获取半径
    int getR(){
        return m_R;
    }

    //设置圆心
    void setCenter(Point center){
        m_Center = center;
    }

    //获取圆心
    Point getCenter(){
        return m_Center;
    }
    
};

//判断关系
void isInCircle(Circle &c, Point &p){
        //计算两点之间的距离  平方
        int distance = 
        (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) + 
        (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
        
        //计算半径的平方
        int rDistance = c.getR() * c.getR();

        //判断关系

        if(distance == rDistance){
            cout << "点在圆上" << endl;
        }
        else if (distance > rDistance){
            cout << "点在圆外" << endl;
        }
        else{
            cout << "点在圆内" << endl;
        }
    }

int main(){
    //创建圆
    
    Circle c;
    //设置半径
    c.setR(10);

    
    //设置点、产生对象center
    Point center;
    //x轴坐标
    center.setX(10);
    //y轴坐标
    center.setY(0);

    //重点:给圆的点、添加圆心属性、这个属性是一个(Point类的对象)这个Point对象有自己坐标是x:10 y:0
    c.setCenter(center);

   //---------------------------------------------------------------------------


    //创建点 
    Point p;
    //x轴坐标
    p.setX(5);
    //y轴坐标
    p.setY(5);

    //判断圆和点的关系
    isInCircle(c,p);
}

posted on 2021-05-13 14:17  袁佳佳  阅读(294)  评论(0编辑  收藏  举报

导航