C++实现两个类比较点和圆的位置关系
时间: 2023-11-22 16:51:52 浏览: 63
假设我们有两个类,一个是点类 Point,一个是圆类 Circle,可以通过以下方式比较它们的位置关系:
```c++
class Point {
private:
double x, y;
public:
Point(double x, double y) {
this->x = x;
this->y = y;
}
double getX() const {
return x;
}
double getY() const {
return y;
}
};
class Circle {
private:
Point center;
double radius;
public:
Circle(Point center, double radius) {
this->center = center;
this->radius = radius;
}
Point getCenter() const {
return center;
}
double getRadius() const {
return radius;
}
};
// 比较圆和点之间的位置关系
enum Position {
INSIDE, // 圆内
BORDER, // 圆上
OUTSIDE // 圆外
};
Position compare(const Circle& circle, const Point& point) {
double distance = sqrt(pow(circle.getCenter().getX() - point.getX(), 2) + pow(circle.getCenter().getY() - point.getY(), 2));
if (distance < circle.getRadius()) {
return INSIDE;
} else if (distance == circle.getRadius()) {
return BORDER;
} else {
return OUTSIDE;
}
}
```
在上面的代码中,我们定义了两个类 Point 和 Circle,以及一个枚举类型 Position,用于表示圆和点之间的位置关系。我们还定义了一个 compare 函数,该函数接受一个 Circle 对象和一个 Point 对象作为参数,并返回一个 Position 类型的值,表示圆和点之间的位置关系。
在 compare 函数中,我们首先计算点到圆心的距离,然后根据这个距离和圆的半径进行比较,最终返回对应的位置关系。如果距离小于半径,则点在圆内;如果距离等于半径,则点在圆上;否则,点在圆外。
阅读全文