c++封装
案列:判断点和圆的关系
点和圆之间的位置关系有以下几种情况:
-
点在圆内部:如果一个点在圆内,那么这个点被称为圆的内部点。这个点到圆心的距离小于圆的半径。
-
点在圆上:如果一个点在圆上,那么这个点被称为圆的弧点。这个点到圆心的距离等于圆的半径。
-
点在圆外部:如果一个点在圆外,那么这个点被称为圆的外部点。这个点到圆心的距离大于圆的半径。
这些位置关系可以通过欧几里得距离公式来判断,即:
d = √((x1-x2)² + (y1-y2)²)
其中,(x1,y1)是圆心的坐标,(x2,y2)是点的坐标,d是这两个点之间的距离。如果这个距离小于圆的半径,那么这个点在圆内部;如果这个距离等于圆的半径,那么这个点在圆上;如果这个距离大于圆的半径,那么这个点在圆外部。
#include <iostream>
using namespace std;
class Point
{
public:
//设置x
void setX(int x1)
{
x = x1;
}
//获取x
int getX()
{
return x;
}
//设置y
void setY(int y1)
{
y = y1;
}
//获取y
int getY()
{
return y;
}
private:
int x;
int y;
};
class Circle
{
public:
//设置半径
void setR(int r1)
{
r = r1;
}
//获取半径
int getR()
{
return r;
}
//设置圆心
void setPointC(Point circleP1)
{
circleP = circleP1;
}
//获取圆心
Point getPointC()
{
return circleP;
}
private:
int r; //半径
Point circleP; //圆心
};
//判断点与圆的关系
void isInCircle(Circle &c,Point &p)
{
int distance;
distance = (c.getPointC().getX() - p.getX()) * (c.getPointC().getX() - p.getX()) + (c.getPointC().getY() - p.getY()) * (c.getPointC().getY() - p.getY());
int rr;
rr = c.getR() * c.getR();
if(distance == rr){
cout << "点在圆上" << endl;
}else if(distance > rr){
cout << "点在圆外" << endl;
}else{
cout << "点在圆内" << endl;
}
}
int main()
{
//创建圆
Circle c1; //圆
Point cirP; //圆点
cirP.setX(10);
cirP.setY(0);
c1.setR(10);
c1.setPointC(cirP);
//创建判断点
Point point;
point.setX(10);
point.setY(1);
isInCircle(c1,point);
return 0;
}