目录
1.问题分析
2.例图
3.代码实现
1.问题分析
如果要判断点与圆的关系,首先需要创建一个圆类和一个点类。圆类中要包含数据成员:半径和数据成员圆心,点类中要包含数据成员:点的x坐标和y坐标。
2.例图
?如图,建立了一个圆心为(10,0),半径为10的圆,和一个坐标为(10,10)的点p,并判断点p与圆心的关系。
3.代码实现
先创建一个点类,并用成员函数实现设置和获取点的坐标
class Point {
public:
//设置x,y
void set_X(int x){
m_X=x;
}
void set_Y(int y){
m_Y=y;
}
//获取x,y
int get_X(){
return m_X;
}
int get_Y(){
return m_Y;
}
private:
int m_X;
int m_Y;
};
再创建一个圆类,并用成员函数实现设置和获取圆心和半径。其中圆心也为点类,是使用另一个类作为本类的一个成员。
class Circle {
public:
//设置半径和圆心
void set_R(int r){
m_R=r;
}
void set_Center(Point center){
m_Center=center;
}
//获取半径和圆心
int get_R(){
return m_R;
}
Point get_Center(){
return m_Center;
}
private:
int m_R;
Point m_Center;
};
之后再用一个函数来判断点与圆的位置关系
void isInCircle(Circle &c,Point &p){
int distance =
(c.get_Center().get_X() - p.get_X()) * (c.get_Center().get_X() - p.get_X()) +
(c.get_Center().get_Y() - p.get_Y()) * (c.get_Center().get_Y() - p.get_Y());
int r_R = c.get_R() * c.get_R();
if(distance = r_R) cout<<"点在圆上"<<endl;
else if(distance>r_R) cout<<"点在圆外"<<endl;
else if(distance<r_R) cout<<"点在圆内"<<endl;
}
主函数,传入参数,判断点与圆的位置关系。
int main() {
Circle c1;
c1.set_R(10);
Point center;
center.set_X(10);
center.set_Y(0);
c1.set_Center(center);
Point p;
p.set_X(10);
p.set_Y(10);
isInCircle(c1,p);
return 0;
}
编译运行
|