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");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM