设计一个点类(Point)和一个圆类(Circle),输入点坐标和圆心坐标及半径,判断点和圆的关系(点在圆内,点在圆上,点在圆外)。利用C++完成
时间: 2024-10-27 12:11:34 浏览: 25
设计一个简单的C++程序来解决这个问题,我们需要创建`Point`和`Circle`两个类,并在`Circle`类中添加一个方法来计算点到圆心的距离并检查该距离是否小于、等于或大于半径,从而确定点与圆的位置关系。
首先,我们创建一个`Point`类,表示二维空间中的一个点:
```cpp
class Point {
public:
double x;
double y;
// 构造函数
Point(double x = 0, double y = 0) : x(x), y(y) {}
};
```
然后,创建`Circle`类,包含点类的对象以及半径信息:
```cpp
#include <cmath> // 引入用于计算平方根的库
class Circle {
private:
Point center; // 圆心
double radius; // 半径
public:
Circle(const Point& center, double radius) : center(center), radius(radius) {}
// 检查点与圆的关系
enum class Position { INSIDE, ON, OUTSIDE };
Position pointInCircle(const Point& p) const {
double distance = std::sqrt(std::pow(p.x - center.x, 2) + std::pow(p.y - center.y, 2));
if (distance < radius)
return Position::INSIDE;
else if (distance == radius)
return Position::ON;
else
return Position::OUTSIDE;
}
};
```
现在,我们可以实例化这两个类并测试它们:
```cpp
int main() {
Point p(3, 4); // 测试点
Circle c(Point(0, 0), 5); // 创建半径为5的圆,圆心在原点
Position relation = c.pointInCircle(p);
switch (relation) {
case Circle::Position::INSIDE:
std::cout << "点在圆内.\n";
break;
case Circle::Position::ON:
std::cout << "点在圆上.\n";
break;
case Circle::Position::OUTSIDE:
std::cout << "点在圆外.\n";
break;
}
return 0;
}
```
当你运行这个程序,它会根据给定的点`p`和圆`c`计算并显示它们之间的位置关系。
阅读全文