题解 | #点和圆的关系#
点和圆的关系
https://www.nowcoder.com/practice/fdbbd0aaf89f49818e9ee1afb02deb10
#include <climits>
#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;
}
};
// 圆类
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;
}
// write your code here......
/*
要判断一个点是否在圆上或者圆里面,可以通过计算该点到圆心的距离与圆的半径进行比较来实现。具体步骤如下:
确定圆的参数:需要知道圆的圆心坐标(a, b)和半径r。
计算距离:计算给定点P的坐标(x1, y1)到圆心的距离d,使用公式 d = √((x1-a)² + (y1-b)²)。
比较距离:
如果 d < r,即 (x1-a)² + (y1-b)² < r²,则点P在圆内。
如果 d = r,即 (x1-a)² + (y1-b)² = r²,则点P在圆上。
如果 d > r,即 (x1-a)² + (y1-b)² > r²,则点P在圆外。
总之,通过上述步骤可以判断点是否在圆上或圆内。此外,如果需要判断两个点是否同时在圆内,可以分别对这两个点应用上述方法,只有当两点都在圆内时,才能得出两点均在圆内的结论。
*/
void isPointerInCircle(Pointer p){
int x1 = p.getX();
int y1 = p.getY();
int a = center.getX();
int b = center.getY();
int d = ((x1-a)*(x1-a))+((y1-b)*(y1-b));
if (d<radius*radius) {
cout<<"in";
}
else if (d==radius*radius) {
cout<<"on";
}
else
cout<<"out";
}
};
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;
}