对于两圆的位置一般有五种关系:

(1) 外离:两圆的半径之和小于两圆圆心距离

(2) 外切:两圆的半径之和等于两圆圆心距离

(3) 相交:两圆的半径之和大于两圆圆心距离,两圆圆心距离大于两圆半径之差

(4) 内切:两圆的半径之差等于两圆圆心距离

(5) 内含:两圆的半径之差小于两圆圆心距离

具体实现C++代码如下:

#include<iostream>
#include<cmath>
using namespace std;
class Point {
private:
double m_x,m_y;
public:
void set(double x, double y) {
m_x = x; m_y = y;
}
double dispoint(Point& another) {
return hypot(m_x - another.m_x, m_y - another.m_y);
}
};
class Circle {
private:
double m_r;
Point p;
public:
void set(double x, double y) {
p.set(x, y);
}
void setr(double r) {
m_r = r;
}
int judge(Circle &another) {
double rr = m_r + another.m_r;
double rs = fabs(m_r - another.m_r);
double dis = p.dispoint(another.p);
if (rr == dis) return 1; //外切
else if (rr < dis) return 2; //外离
else if (dis<rr && dis>rs) return 3;//相交
else if (rs == dis) return 4;//内切
else if (rs > dis) return 5;//内含
}
};
void main() {
Circle c1, c2;
double x, y,r,jude;
cout << "请输入圆1x坐标:" << endl;
cin >> x;
cout << "请输入圆1y坐标:" << endl;
cin >> y;
c1.set(x, y);
cout << "请输入圆1半径:" << endl;
cin >> r;
c1.setr(r);
cout << "请输入圆2x坐标:" << endl;
cin >> x;
cout << "请输入圆2y坐标:" << endl;
cin >> y;
c2.set(x, y);
cout << "请输入圆2半径:" << endl;
cin >> r;
c2.setr(r);
jude = c1.judge(c2);
if (jude == 1) {
cout << "两圆相外切" << endl;
}
else if (jude == 3) {
cout << "两圆相交" << endl;
}
else if(jude == 2) {
cout << "两圆相外离" << endl;
}
else if (jude == 4) {
cout << "两圆相内切" << endl;
}
else if (jude == 5) {
cout << "两圆相内含" << endl;
}
system("pause");
}

c++ 判断两圆位置关系的更多相关文章

  1. POJ 1269 Intersecting Lines(判断两直线位置关系)

    题目传送门:POJ 1269 Intersecting Lines Description We all know that a pair of distinct points on a plane ...

  2. HDU 6354--Everything Has Changed(判断两圆关系+弧长计算)

    题目 题意:首先给定一个以原点为圆心,R为半径的圆,之后在给m个圆,这些圆可能会和原来的圆有所交集,计算开始的圆剩余区域的周长,不包括内部周长. 首先判定两圆关系,如果内含,直接加上圆的周长,如果相交 ...

  3. poj 1269 判断直线的位置关系

    题目链接 题意 判断两条直线的位置关系,重合/平行/相交(求交点). 直线以其上两点的形式给出(点坐标为整点). 思路 写出直线的一般式方程(用\(gcd\)化为最简), 计算\(\begin{vma ...

  4. c++ 判断点和圆位置关系(类的声明和类的实现分开)

    Point.h: #pragma onceclass Point{private: double p_x, p_y;public: void setXY(double x,double y); dou ...

  5. 判断两条直线的位置关系 POJ 1269 Intersecting Lines

    两条直线可能有三种关系:1.共线     2.平行(不包括共线)    3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...

  6. JS魔法堂:判断节点位置关系

    一.前言 在polyfill querySelectorAll 和写弹出窗时都需要判断两个节点间的位置关系,通过jQuery我们可以轻松搞定,但原生JS呢?下面我将整理各种判断方法,以供日后查阅. 二 ...

  7. 平面内,线与线 两条线找交点 两条线段的位置关系(相交)判定与交点求解 C#

    个人亲自编写.测试,可以正常使用   道理看原文,这里不多说   网上找到的几篇基本都不能用的   C#代码 bool Equal(float f1, float f2) { return (Math ...

  8. poj1269---直线位置关系

    题目大意:给你8个点,也就是两条直线,让你判断他们的位置关系 代码如下: #include <iostream> #include<cstdio> #include<cm ...

  9. LightOJ 1118--Incredible Molecules(两圆相交)

    1118 - Incredible Molecules      PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Lim ...

随机推荐

  1. git的clone和github的fork

    git的clone是从github上下载下来,clone到项目里面,fork是在本地修改后再提交到github上,在github上用request来进行提交,经作者确认后可以合同到mast分支上

  2. 通俗理解vue路由的导航钩子中关于next()

    1 背景:你乘坐汽车从A景区想赶往B景区(模拟路由A跳转到路由B) 1.next() 你乘坐汽车要从A景区到B景区,路过关卡时,守门人拦下你,你量出了next(),守门人一看没问题,赶紧放行,于是你顺 ...

  3. CSS自适应布局

    目标效果: 缩小浏览器之后 在<head>最前面引入flexible.js <head> ... <script type="text/javascript&q ...

  4. linux 内存

    [转]Linux 查看内存(free buffer cache) 转自:http://elf8848.iteye.com/blog/1995638 Linux下如何查内存信息,如内存总量.已使用量.可 ...

  5. vscode 代码缩进2格

    "editor.detectIndentation":false,

  6. 2019 Multi-University Training Contest 3 T6 - Fansblog

    Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. 网页设计之js

    1.JavaScript概述 javaScript与ECMAScript的相爱相杀 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组 ...

  8. VS Code报错Module 'xx' has no 'xx' member pylint(no-member)解决办法

    pylint是vscode的python语法检查器,pylint是静态检查,在用第三方库的时候有些成员只有在运行代码的时候才会被建立,它就找不到成员,在设置(settings.json)里添加 &qu ...

  9. SQL的积累

    SQL的积累学习(不常用的经常会忘记,所以以后用到的就会记在下面): --新增字段alter table t_Student add Test varchar(200)--删除字段alter tabl ...

  10. Django REST framework 之 认证 权限 限制

    认证是确定你是谁 权限是指你有没有访问这个接口的权限 限制主要是指限制你的访问频率 认证 REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案. 接下类我们就自己 ...