封装小例子——点和圆

  • 案例描述:判断点和圆的位置

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
using namespace std;
//圆类:
//半径长度、圆心坐标
class Circle {
private:
double c_r;//半径长度 可读可写
double c_x;//圆心横坐标 可读可写
double c_y;//圆心纵坐标 可读可写
public:
//获取半径长度
double getC_r() {
return c_r;
}
//设置圆的半径
void setC_r(double R) {
c_r = R;
}
//获取圆心横坐标
double getC_x() {
return c_x;
}
//设置原坐标
void setC_x(double x) {
c_x = x;
}
//获取圆心纵坐标
double getC_y() {
return c_y;
}
//设置纵坐标
void setC_y(double y) {
c_y = y;
}
};
//点类
//坐标 可读可写
class point {
private:
double p_x;
double p_y;
public:
//获取圆心横坐标
double getP_x() {
return p_x;
}
//设置原坐标
void setP_x(double x) {
p_x = x;
}
//获取圆心纵坐标
double getP_y() {
return p_y;
}
//设置纵坐标
void setP_y(double y) {
p_y = y;
}
};
void RalationOf_PC(Circle &c,point &p) {
int dist = pow(c.getC_x() - p.getP_x(), 2) + pow(c.getC_y() - p.getP_y(), 2);
//cout << "点到圆的距离的平方为:" << dist << endl;
if (dist > pow(c.getC_r(),2)) {
cout << "点在圆外" << endl;
}
if (dist < pow(c.getC_r(), 2)) {
cout << "点在圆内" << endl;
}
if (dist == pow(c.getC_r(), 2)) {
cout << "点在圆上" << endl;
}
}
int main() {
Circle c;
c.setC_r(2);
c.setC_x(1);
c.setC_y(0);
point p;
p.setP_x(3);
p.setP_y(0);
RalationOf_PC(c, p);
return 0;
}

运行结果:

1
点在圆上