C++ 点圆关系

//判断一个点是否在圆外、圆上、圆内

#include <iostream>

using namespace std;

//点类
class Point{
public:
    void set_Point_position(int x, int y)
    {
        m_X = x;
        m_Y = y;
    }
    int get_Point_X()
    {        
        return m_X;
    }
    int get_Point_Y()
    {
        return m_Y;
    }
private:
    int m_X;
    int m_Y;
};

//圆类
class Cicle{
    public:
        //设置圆的半径
        void set_Cicle_R(int r)
        {
            m_r = r;
        }
        //设置圆心位置
        void set_Cicle_Centor(Point &pnt)
        {
            m_pnt.set_Point_position(pnt.get_Point_X(),pnt.get_Point_Y());
        }
        
        //计算点到圆心的距离并与圆半径进行比较
        void point_cicle_relation(Point &pnt)
        {
            int pnt_x=pnt.get_Point_X();
            int pnt_y=pnt.get_Point_Y();
            int mpnt_x = m_pnt.get_Point_X();
            int mpnt_y = m_pnt.get_Point_Y();
            
            int mcicle_square=m_r*m_r;
            
            cout<<"pnt_x:"<<pnt_x<<","<<"pnt_y:"<<pnt_y<<endl;
            cout<<"mpnt_x:"<<mpnt_x<<","<<"mpnt_y:"<<mpnt_y<<endl;
            
            int len = (pnt_x - mpnt_x)*(pnt_x - mpnt_x) + (pnt_y - mpnt_y)* (pnt_y - mpnt_y);
            cout<<"point to centor len:"<<len<<endl;
            cout<<"cicle_square:"<<mcicle_square<<endl;
            if (mcicle_square == len)
            {
                cout<<"point is on side of cicle"<<endl;
            }
            if (mcicle_square < len)
            {
                cout<<"point is out side of cicle"<<endl;
            }
            if (mcicle_square > len)
            {
                cout<<"point is in side of cicle"<<endl;
            }
        }
    private:
        //圆半径
        int m_r;
        //点对象作为数据成员
        Point m_pnt;
};


int main()
{
    //圆心
    Point pnt_centor;
    pnt_centor.set_Point_position(5,5);
    Cicle cl;
    cl.set_Cicle_R(5);
    cl.set_Cicle_Centor(pnt_centor);
    
    //点
    Point pnt_tmp;
    pnt_tmp.set_Point_position(10,5);
    cl.point_cicle_relation(pnt_tmp);

    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值