qfedu-cpp-level/day2/d15.cpp

84 lines
1.2 KiB
C++
Raw Permalink Normal View History

// 点和圆的关系
#include <iostream>
#include <cmath>
using namespace std;
enum Pos_e
{
onCircle = 4, // 点在圆上
inCircle, // 点在圆内
outCircle // 点在圆外
};
class Point
{
public:
int x, y;
};
class AdvCircle
{
public:
int init(int x0, int y0, int r)
{
this->r = r;
o.x = x0;
o.y = y0;
}
Pos_e at(Point &point);
private:
int r;
Point o; // 圆心点
};
Pos_e AdvCircle::at(Point &point)
{
int distence = pow((point.x - this->o.x), 2) + pow((point.y - this->o.y), 2);
int rr = r * r;
if (distence == rr)
{
return onCircle;
}
else if (distence < rr)
{
return inCircle;
}
else
return outCircle;
}
string posToString(Pos_e pos)
{
switch (pos)
{
case onCircle:
return "在圆上";
break;
case inCircle:
return "在圆内";
break;
case outCircle:
return "在圆外";
break;
default:
break;
}
}
int main()
{
AdvCircle c1;
c1.init(0, 0, 2);
Point p1;
p1.x = 1;
p1.y = 1;
cout << "c1.at(p1) " << posToString(c1.at(p1)) << endl;
return 0;
}