C++实现两个类比较点和圆的位置关系
时间: 2023-07-15 22:13:37 浏览: 110
可以定义两个类,一个是点(Point),一个是圆(Circle)。
Point类可以包含两个私有成员变量x和y表示点的坐标,可以提供构造函数、获取x和y的方法等。
Circle类可以包含一个私有成员变量center表示圆心坐标,还有一个私有成员变量radius表示半径,可以提供构造函数、获取圆心坐标和半径的方法等。另外,Circle类还可以提供一个判断点是否在圆内的公有函数isPointInside,具体实现如下:
```c++
class Point {
public:
Point(int x, int y): x(x), y(y) {}
int getX() { return x; }
int getY() { return y; }
private:
int x;
int y;
};
class Circle {
public:
Circle(Point center, int radius): center(center), radius(radius) {}
Point getCenter() { return center; }
int getRadius() { return radius; }
bool isPointInside(Point p) {
int dx = center.getX() - p.getX();
int dy = center.getY() - p.getY();
return (dx * dx + dy * dy) <= (radius * radius);
}
private:
Point center;
int radius;
};
```
在上面的代码中,isPointInside函数首先计算出点p和圆心的距离的平方,然后判断这个距离的平方是否小于等于半径的平方,如果是,则点在圆内,返回true,否则返回false。
可以在主函数中创建两个点和一个圆,然后调用isPointInside函数判断点是否在圆内。例如:
```c++
int main() {
Point p(1, 1);
Point center(0, 0);
Circle c(center, 2);
if(c.isPointInside(p)) {
cout << "Point is inside the circle" << endl;
} else {
cout << "Point is outside the circle" << endl;
}
return 0;
}
```
上面的代码中,定义了一个点p(1, 1),圆心是(0, 0),半径是2的圆c,然后判断点p是否在圆c内。根据计算结果,输出"Point is outside the circle"。
阅读全文