* 点和圆的位置关系
* 在圆内、在圆上、在圆外
* 坐标计算公式(x1-x2)^2+(y1-y2)^2 = R^2
[C++] 纯文本查看 复制代码 #include<iostream>
using namespace std;
/*
* 点和圆的位置关系
* 在圆内、在圆上、在圆外
* 坐标计算公式(x1-x2)^2+(y1-y2)^2 = R^2
*/
//定义点类
class Point
{
public:
//设置X的坐标值
void setX(double sx)
{
P_X = sx;
}
//获取X的坐标值
double getX()
{
return P_X;
}
//设置Y的坐标值
void setY(double sy)
{
P_Y = sy;
}
//获取Y的坐标值
double getY()
{
return P_Y;
}
private:
int P_X;
int P_Y;
};
//定义圆类
class Circle
{
public:
//设置半径
void setR(double sr)
{
C_R = sr;
}
//获取半径
double getR()
{
return C_R;
}
//设置圆心坐标
void setCenter(Point Center)
{
CP = Center;
}
//获取圆心坐标
Point getCenter()
{
return CP;
}
private:
double C_R;
Point CP; //圆心坐标
};
//位置关系函数
void Pos_Relationship(Point &PP, Circle &CP)
{
double Distance = (PP.getX() - CP.getCenter().getX()) * (PP.getX() - CP.getCenter().getX()) + (PP.getY() - CP.getCenter().getY()) * (PP.getY() - CP.getCenter().getY());
double rad = CP.getR() * CP.getR();
if (Distance == rad)
{
cout << "这个点在圆上" << endl;
}
else if (Distance > rad)
{
cout << "这个点在圆外" << endl;
}
else
{
cout << "这个点在圆内" << endl;
}
}
//主函数
int main()
{
//这是一个圆
Circle C1;
Point Center;
Point P1;
//设置半径
C1.setR(2);
//设置圆心
Center.setX(10);
Center.setY(0);
C1.setCenter(Center);
//设置需要比较的点
P1.setX(10);
P1.setY(11);
//进行比较
Pos_Relationship(P1, C1);
system("pause");
return 0;
} |