设计一个圆类(circle) 和一个点类,求解点和圆的关系

三种关系:

点在圆外  点在圆上   点在圆内
点和圆心之间的距离与半径进行对比即可得到结果

获取点(X2,Y2)与圆心(X1,Y1)之间的距离

D=根号下(X2-X1)平方+(Y2-Y1)平方

D和圆的半径m_r进行对比

(简化:D的平方与m_r的平方进行对比)

圆类:圆心   半径

点类:X Y 坐标

下面进行代码的演示:

 

 

 

 

 

#include<iostream>

using namespacestd;

#include <string>

//点和圆的关系案例

//1.圆类

class point

{

public:

    voidsetX(int x)//设置x坐标

    {

        m_x =x;

    }

    intgetX()//获取x坐标

    {

        returnm_x;

    }

    voidsetY(int y)//设置y坐标

    {

        m_y =y;

    }

    intgetY()//获取y坐标

    {

        returnm_y;

    }

private:

    intm_x;

    intm_y;

};

class circle

{

public://行为

    voidsetR(int r)//设置半径

    {

        m_r =r;

     }

    intgetR()//获取半径

    {

        returnm_r;

    }

    voidsetcenter(point center)//设置圆心

    {

        m_center= center;

    }

    pointgetcenter()//获取圆心

    {

        returnm_center;

    }

private://属性

    intm_r;//半径

    //在类中,可以让另一个类作为本类中的成员

    pointm_center;//圆心(此处需要自定义一个点类的数据类型)

};

//判断点和圆的关系

voidisincircle(point&p,circle&c)//引用的方式进行传递

{

    //计算点到圆心之间的距离的平方

    intdistance = (c.getcenter().getX() -p.getX()) * (c.getcenter().getX()) + (c.getcenter().getY() -p.getY()) * (c.getcenter().getY() -p.getY());

    //计算半径的平方

    intr2 =c.getR() *c.getR();

    //判断关系

    if(distance == r2)

    {

        cout<< "点在圆上" <<endl;

    }

    else if(distance < r2)

    {

        cout<< "点在圆内" <<endl;

    }

    else

    {

        cout<< "点在圆外" <<endl;

    }

}

intmain()

{

    circlec;

    c.setR(10);

    pointcenter;

    center.setX(10);

    center.setY(0);

    c.setcenter(center);

    pointp;

    p.setX(10);

    p.setY(10);

    isincircle(p, c);

    system("pause");

    return0;

}


版权声明:本文为weixin_64523024原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。