判断圆和点位置关系

时间:2023-01-14 19:56:21
#define _CRT_SECURE_NO_WARNINGS 1 
#include<iostream>
using namespace std;
#include<cmath>

//点类
class Point
{
int X, Y;
public:
void setX(int x)//设置x坐标
{
X = x;
}
int getX()
{
return X;
}

void setY(int y)//设置y坐标
{
Y = y;
}
int getY()
{
return Y;
}
};

//圆类
class Circle
{
int radius;
public:
void setR(int r)//设置半径R
{
radius = r;
}
int getR()
{
return radius;
}

Point Center;//圆心

};

//判断圆和点的位置关系:
void isSameLocal(Circle c, Point p)
{
//计算两点之间的距离
double distance =
sqrt(pow((c.Center.getX() - p.getX()), 2) + pow(c.Center.getY() - p.getY(), 2));
int r = c.getR();//圆的半径

if (distance == r)
{
cout << "点在圆上" << endl;
}
else if (distance > r)
{
cout << "点在圆外" << endl;
}
else
{
cout << "点在圆内" << endl;
}
}
int main()//类默认权限为 私有型:private
{
Point p1;//创建点1
p1.setX(11);
p1.setY(10);

Point p2;//创建点2
p2.setX(10);
p2.setY(10);

Point p3;//创建点3
p3.setX(10);
p3.setY(9);

Circle c;//创建圆
c.setR(10);
c.Center.setX(10);
c.Center.setY(0);

//判断圆和点之间的关系:
isSameLocal(c, p1);
isSameLocal(c, p2);
isSameLocal(c, p3);

system("pause");
return 0;
}