点和圆的关系

设计一个圆类和一个点类,判断点和圆的关系。

1.首先,圆类我们要设置它的圆心和半径。

2.点要写出它的x坐标和y坐标。

3.判断点和圆的关系就是计算点到圆心的距离,然后用这个距离和半径比较。

4.那么如果这个距离比半径大,就是在圆外,反之就是圆内,如果相等,就在圆上

用代码来解释就是

void panduan(Circle &c,Point &p)//这里传入圆心,和点的坐标
{int juli=(c.getcenter().getX() - p.getX())* (c.getcenter().getX() - 
    (p.getX()) +( c.getcenter().getY() - p.getY())* (p.getX()) + c.getcenter().getY() - p.getY());//这里是(x1-x2)^2+(y1-y2)^2,也就是点到圆心距离的平方
    int L = c.getR() * c.getR();//L是半径的平方
if (juli == L)//我们拿点到距离的平方和半径的平方作比较,就不用开根号了,这里是距离等于半径
    {
        cout << "点在圆上" << endl;
    }
    else if (juli > L)//距离比半径大
    {
        cout << "点在圆外" << endl;
    }
    else//距离比半径小
    {
        cout << "点在圆内" << endl;
    }
}

主要的写完了,剩下的就是创建圆类和点类,然后把上面判断的过程加进去就行了

完整代码是

#include<iostream>
using namespace std;
class Point {
private:
    int m_X;//设置x坐标
    int m_Y;//y坐标
public:
    void setX(int x)//设置x
    {
        m_X = x;
    }
    int getX()//获得x
    {
        return m_X;
    }
    void setY(int y)//设置y
    {
        m_Y = y;
    }
    int getY()//获得y
    {
        return m_Y;
    }
};
class Circle {
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;//获得圆心坐标 } private: Point m_center; int m_R; }; void panduan(Circle &c,Point &p) {int juli=(c.getcenter().getX() - p.getX())* (c.getcenter().getX() - (p.getX()) +( c.getcenter().getY() - p.getY())* (p.getX()) + c.getcenter().getY() - p.getY()); int L = c.getR() * c.getR(); if (juli == L) { cout << "点在圆上" << endl; } else if (juli > L) { cout << "点在圆外" << endl; } else { cout << "点在圆内" << endl; } } int main() { Circle c;//创建一个叫c的圆 c.setR(10);//圆的半径设置为10 Point center; center.setX(10);//圆的圆心x坐标为10 center.setY(0);//圆心y坐标为0 c.setcenter(center); Point p;//创建一个叫p的点 p.setX(101);//p点x坐标为101 p.setY(101);//y坐标为101 panduan(c, p);//判断点和圆的关系 return 0; }

 

posted @ 2023-04-25 20:35  酥饼馅红豆沙  阅读(62)  评论(0编辑  收藏  举报