判断点和圆的关系的方法:比较点到圆心的距离,若距离小于半径就在圆内,若距离等于半径就在圆上,若大于就在圆外。
这里Pointer类里本来是 没有distance函数的! 千万不要直接拿来用哦!我定义它是为了更好确定点到圆心的距离(圆心也是点嘛),这里定义实现分离比较好看,但是它题目模板里都是放在类里的。。。
#include <cmath>
#include <iostream>
using namespace std;
// 点类
class Pointer {
private:
int x; // x 坐标
int y; // y 坐标
public:
void setX(int x) {
this->x = x;
}
int getX() {
return x;
}
void setY(int y) {
this->y = y;
}
int getY() {
return y;
}
double distance(Pointer p) {
return sqrt((this->x - p.x) * (this->x - p.x) + (this->y - p.y) *
(this->y - p.y));
}
};
// 圆类
class Circle {
private:
Pointer center; // 圆心
int radius; // 半径
public:
void setCenter(int x, int y) {
center.setX(x);
center.setY(y);
}
void setRadius(int radius) {
this->radius = radius;
}
void isPointerInCircle(Pointer p);
};
void Circle::isPointerInCircle(Pointer p) {
if (center.distance(p) < radius) {
cout << "in" << endl;
}
if (center.distance(p) == radius) {
cout << "on" << endl;
}
if (center.distance(p) > radius) {
cout << "out" << endl;
}
}
int main() {
// 键盘输入点的坐标
int x, y;
cin >> x;
cin >> y;
// 创建一个点
Pointer p;
p.setX(x);
p.setY(y);
// 创建一个圆
Circle c;
c.setCenter(5, 0);
c.setRadius(5);
// 判断点和圆的关系
c.isPointerInCircle(p);
return 0;
}

京公网安备 11010502036488号