三种关系:
点在圆外 点在圆上 点在圆内
点和圆心之间的距离与半径进行对比即可得到结果
获取点(X2,Y2)与圆心(X1,Y1)之间的距离
D=根号下(X2-X1)平方+(Y2-Y1)平方
D和圆的半径m_r进行对比
(简化:D的平方与m_r的平方进行对比)
圆类:圆心 半径
点类:X Y 坐标
下面进行代码的演示:
#include<iostream>
using namespace std;
#include <string>
//点和圆的关系案例
//1.圆类
class point
{
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;
}
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(point &p,circle &c)//引用的方式进行传递
{
//计算点到圆心之间的距离的平方
int distance = (c.getcenter().getX() - p.getX()) * (c.getcenter().getX()) + (c.getcenter().getY() - p.getY()) * (c.getcenter().getY() - p.getY());
//计算半径的平方
int r2 = c.getR() * c.getR();
//判断关系
if (distance == r2)
{
cout << "点在圆上" << endl;
}
else if (distance < r2)
{
cout << "点在圆内" << endl;
}
else
{
cout << "点在圆外" << endl;
}
}
int main()
{
circle c;
c.setR(10);
point center;
center.setX(10);
center.setY(0);
c.setcenter(center);
point p;
p.setX(10);
p.setY(10);
isincircle(p, c);
system("pause");
return 0;
}