//以下是三个头文件

//AdvCircle.h

#pragma once

class AdvCircle
{
public:
    void setCircle(int _r, int _x0, int _y0);
    
    int getX1();
    int getY1();
    int getR1();

private:
    int r;
    int x0;
    int y0;
};

//DisPoint.h

#pragma once
#include "MyPoint.h"
#include "AdvCircle.h"

class DisPoint//定义一个距离类,通过提供两点坐标来进行两点之间距离的计算
{
public:
    double CalculateDis(MyPoint & myp01, MyPoint & myp02);
    int CalculateL(AdvCircle &mp01, AdvCircle &mp02);
};

//MyPoint.h

#pragma once

#include"AdvCircle.h"

class MyPoint
{
public:
    void setPoint(AdvCircle &cir);
    int getX1();
    int getY1();

private:
    int x1;
    int y1;
};

下面是我的cpp文件

1.//AdvCircle.cpp

#include <iostream>
using namespace std;

#include "AdvCircle.h"

void AdvCircle::setCircle(int _r, int _x0, int _y0)
{
    r = _r; x0 = _x0; y0 = _y0;
}
int AdvCircle::getX1()
{
    return x0;
}
int AdvCircle::getY1()
{
    return y0;
}
int AdvCircle::getR1()
{
    return r;
}

2.//MyPoint.cpp

//在头文件中可以进行前置声明,但在cpp文件中不可以使用前置声明
             //如果需要使用前置的声明,必须将函数写在前面

#include "MyPoint.h"
#include "AdvCircle.h"

void MyPoint::setPoint(AdvCircle &cir)
    {
        x1 = cir.getX1();
        y1 = cir.getY1();
    }
    int MyPoint::getX1()
    {
        return x1;
    }
    int MyPoint::getY1()
    {
        return y1;
    }

3.//DisPoint.cpp

#include "MyPoint.h"
#include "DisPoint.h"
#include "AdvCircle.h"
#include <math.h>

double DisPoint::CalculateDis(MyPoint & myp01, MyPoint & myp02)
{

double dis = sqrt((myp01.getX1() - myp02.getX1())*(myp01.getX1() - myp02.getX1()) + (myp01.getY1() - myp02.getY1())*(myp01.getY1() - myp02.getY1()));
    return dis;

}
int DisPoint::CalculateL(AdvCircle &mp01, AdvCircle &mp02)
{
    
    int lenth = mp01.getR1() + mp02.getR1();
    return lenth;

}

4.//main()

#include <iostream>
#include "MyPoint.h"
#include "AdvCircle.h"
#include "DisPoint.h"
using namespace std;

int main()
{
    AdvCircle c1,c2;
    int r1, x1, y1;
    int r2, x2, y2;

cout << "请输入第一个圆的半径、x1和y1 " << endl;
    cin >> r1 >> x1 >> y1;
    c1.setCircle(r1, x1, y1);

cout << "请输入第二个圆的半径、x2和y2 " << endl;
    cin >> r2 >> x2 >> y2;
    c2.setCircle(r2, x2, y2);

MyPoint p1, p2;
    DisPoint p;//这个值无论是什么值其都可以,因为必须要声明,而其中p就是一个对象,其叫什么无所谓
    p1.setPoint(c1);
    p2.setPoint(c2);

double tag = p.CalculateDis(p1, p2);
    int l = p.CalculateL(c1, c2);

if (tag > l)
    {
        cout << "相离" << endl;
    }
    else if (tag = l)
    {
        cout << "相切" << endl;
    }
    else
    {
        cout << "相交" << endl;
    }

cout << " 两圆心距离为 " << tag << endl;
    system("pause");

}

注:头一次写博客,如有错误和建议,欢迎纠正

最近在学c++,多交流,共同进步

c++定义圆类、点类,通过求两点距离判断两圆的位置关系相关推荐

  1. MATLAB求图片两圆圆心,求助:如何求此图中两圆的圆心距?

    对于你给出的图片,我根据之前提到的思路编写了以下程序.感觉还蛮准的.这个程序只能用于两圆相交的情况.当小圆在大圆内部时,需要在其中加以判定.仅供参考. clear;clc c = imread('1. ...

  2. c++ 判断两圆位置关系

    对于两圆的位置一般有五种关系: (1) 外离:两圆的半径之和小于两圆圆心距离 (2) 外切:两圆的半径之和等于两圆圆心距离 (3) 相交:两圆的半径之和大于两圆圆心距离,两圆圆心距离大于两圆半径之差 ...

  3. python求交点坐标_Python - 两圆相交求交点坐标

    Python - 两圆相交求交点坐标 Max.Bai 2016-05-16 Python - 两圆相交求交点坐标 三轴机械臂求坐标问题,其实转化为平面问题就是两圆相交求交点问题,交点算出来就可以用反三 ...

  4. C++ Point类求两点距离

    #include<iostream> #include<math.h> using namespace std;class Point{ private: double X,Y ...

  5. JAVA利用数组求两点距离_利用java、js或mysql计算高德地图中两坐标之间的距离

    利用java.js或mysql计算高德地图中两坐标之间的距离 2019-09-19 编程之家收集整理的这篇文章主要介绍了利用java.js或mysql计算高德地图中两坐标之间的距离,编程之家小编觉得挺 ...

  6. HDOJ 2547 无剑无我(求两点距离)

    HDACM 2547 由 f(x, y, m, n) = sqrt(x*x + y*y + m*m + n*n - 2*m*x - 2*n*y) 可转化为 f(x, y, m, n)=sqrt((x- ...

  7. 不开方求两点距离的算法

    今天在论坛中看到了一个有趣的算法,不需要开方就可以得到两点间的距离,很有意思; static int approx_distance2D(int dx,int dy){ int min,max; if ...

  8. C语言坐标系求两点距离

     二维 #include<stdio.h> #include<math.h> int main(){float x1,x2,y1,y2,distance;scanf(" ...

  9. 两个圆公切线求法_求两圆的公切线计算

    关于两圆的公切线计算我们首先需要搞清楚的是两个圆之间有哪些位置关系,两个圆的位置包括内含.内切.外切.外离几种方式,可以看出位置关系可以根据"两圆心之间的距离"与"两圆半 ...

最新文章

  1. api 微信小程序组件库colorui_2020最全微信小程序UI组件库合集
  2. Idea新建项目默认是JDK1.5解决办法
  3. LeetCode 70. Climbing Stairs
  4. getimg()在java中,java – 使用getClass()加载资源getResource()
  5. 一篇文章带你读懂 MySQL 和 InnoDB
  6. HikariDataSource 监控_Prometheus监控告警浅析
  7. MediaStreamAudioSourceNode
  8. opencv 图像分割-分水岭算法
  9. 方法的运用_运用正确管理方法缩减库存,助力企业发展
  10. 网页特效代码大全网址
  11. JS删除数组中某一项或几项的方法汇总
  12. Django中ORM模型总结(二)[抽象模型类,模型类的对应关系,模型类的属性,字段类型]...
  13. Effective Objective-C 的读书笔记
  14. 机电传动与控制【1】
  15. word导出PDF,彩色无故变成黑色的解决办法。
  16. OPPO K9 Pro刷root强解锁BL刷面具Magisk框架 oppo k9pro root教程
  17. 启动马达接线实物图_三相电机直接启动接线图及启动过程解说
  18. Linux信号处理简析
  19. JavaScript-ES7~ES8新特性使用教程
  20. 5G及后5G时代:万物互联到万物智能的黄金时代

热门文章

  1. 白话DQN(DeepQ-Learning)强化学习算法(五子棋九宫格对弈实例)
  2. spark对DataFrame操作的方法(包含去除重复)
  3. Debian10 如何设置关闭屏幕和设置锁屏时间
  4. 为什么不看好企业做微信公众号了
  5. 富文本编辑器editor初次无法加载的问题
  6. mysql初始话密码_您所说的话:如何跟踪密码
  7. 雷军试乘谷歌无人驾驶汽车:小米汽车可以有?
  8. Kali学习笔记(一)利用burpsuite爆破wifi管理员密码
  9. ObjC 实现的大数相加,大数相乘和n的阶乘
  10. 面相大师App技术支持