c++ 判断点和圆位置关系(类的声明和类的实现分开)
point.h:
#pragma once
class point
{
private:
double p_x, p_y;
public:
void setxy(double x,double y);
double getx();
double gety();
};
advcircle.h:
#pragma once
#include "point.h"
class advcircle
{
private:
double m_x, m_y,m_r;
public:
void set(double x, double y,double r);
int judge(point p);
};
point.cpp:
#include "point.h"
void point::setxy(double x, double y) {
p_x = x;
p_y = y;
}
double point::getx() {
return p_x;
}
double point::gety() {
return p_y;
}
advcircle.cpp:
#include "advcircle.h"
#include "cmath"
void advcircle::set(double x, double y,double r) {
m_x = x;
m_y = y;
m_r = r;
}
int advcircle::judge(point p) {
double dis = hypot(m_x-p.getx(),m_y-p.gety());
if (dis > m_r) return 1;//圆外
else if (dis == m_r) return 2;//圆上
else if (dis < m_r) return 3;//圆内
}
circle_relation_point.cpp:
#include <iostream>
#include"point.h"
#include"advcircle.h"
using namespace std;
int main()
{
point p; advcircle c1;
double x, y,r;
int jud;
cout << "请输入点的x坐标:" << endl;
cin >> x;
cout << "请输入点的y坐标:" << endl;
cin >> y;
p.setxy(x, y);
cout << "请输入圆心的x坐标:" << endl;
cin >> x;
cout << "请输入圆心的y坐标:" << endl;
cin >> y;
cout << "请输入圆心的半径:" << endl;
cin >> r;
c1.set(x, y, r);
jud = c1.judge(p);
if (jud == 1) cout << "点在圆外" << endl;
else if (jud == 2) cout << "点在圆上" << endl;
else if (jud == 3) cout << "点在圆内" << endl;
system("pause");
}