Question:
c++实现判断点与圆的位置关系
(1)点在圆上
(2)点在圆内
(3)点在圆外
c++代码实现:
#include <iostream>
using namespace std;
//判断点和圆的位置关系
//点类
class Point {
public:
//getset方法
void setX(int x){
m_X=x;
}
int getX(){
return m_X;
}
void setY(int y){
m_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;//半径
// int m_X;
//int m_Y;
//上面x和y的坐标可以看成整体
Point m_Center;
};
//判断点和圆的关系的函数
void idInCircle(Circle &c,Point &p){
//计算两点之间距离 平方
int Longs=
(c.getCenter().getX()-p.getX())*(c.getCenter().getX()-p.getX())+
(c.getCenter().getY()-p.getY())*(c.getCenter().getY()-p.getY());
//计算半径的平方
int rLongs=c.getR()*c.getR();
//判断
if(Longs==rLongs){
cout<<"点在圆上"<<endl;
}
else if(Longs>rLongs){
cout<<"点在圆外"<<endl;
}
else{
cout<<"点在圆内"<<endl;
}
}
int main()
{
//创建圆的对象
Circle c1;
c1.setR(10);
Point center;
center.setX(10);
center.setY(0);
c1.SetCenter(center);
//创建点的对象
Point p;
p.setX(10);
p.setY(10);
idInCircle(c1,p);
return 0;
}