#include<bits/stdc++.h>
using namespace std;
class Point{
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;
}
private:
int m_X;
int 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:
int m_R;//半径
Point 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;
}
if(distance<rDistance){
cout<<"点在圆内"<<endl;
}
}
int main(){
//创建圆
Circle c;
c.setR(10);
Point center;
center.setX(10);
center.setY(0);
c.setCenter(center);
//创建点
Point p;
p.setX(8);
p.setY(8);
//判断关系
isInCircle(c,p);
return 0;
}
-
首先,定义了两个类:Point(点)和Circle(圆)。Point类包含了一个点的坐标信息,而Circle类包含了圆的半径和圆心(使用了Point类的对象表示)。每个类都有一些公有的方法用于设置和获取相关的属性。
-
然后,在main()函数中创建了一个圆对象c和一个点对象p,并设置它们的相关属性。圆的半径设置为10,圆心的坐标为(10, 0),点的坐标为(8, 8)。
-
接下来,通过isInCircle()函数判断点p与圆c的位置关系。这个函数接受一个圆对象和一个点对象作为参数,首先计算了点到圆心的距离的平方,然后与圆半径的平方进行比较,以确定点与圆的位置关系。根据距离的比较结果输出相应的信息,如点在圆上、圆内或圆外。