实验12:Problem D: 判断两个圆之间的关系

Home Web Board ProblemSet Standing Status Statistics

Problem D: 判断两个圆之间的关系

Problem D: 判断两个圆之间的关系

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 381  Solved: 325
[Submit][Status][Web Board]

Description

定义Point类,包括double类型的两个属性,分别表示二维空间中一个点的横纵坐标;定义其必要的构造函数和拷贝构造函数。

定义Circle类,包括Point类的对象和一个double类型的数据作为其属性,分别表示圆心坐标及半径;定义其必要的构造函数、拷贝构造函数。定义Circle类的成员函数:

int JudgeRelation(const Circle& another)

用于判断当前圆与another之间的位置关系。该函数的返回值根据以下规则确定:当两个圆外离时返回1;当两个圆内含时返回2;当两个圆外切时返回3; 当两个圆内且时返回4;当两个圆相交时返回5。

Input

第1行N>0表示测试用例个数。

每个测试用例包括2行,第1行是第1个圆的位置及半径;第2行是第2个圆的位置和半径。

Output

每个测试用例对应一行输出,输出两个圆之间的位置关系。见样例。

Sample Input

5
0 0 10
20 20 1
0 0 10
1 1 4
0 0 10
0 20 10
0 0 10
0 5 5
0 0 10
15 0 10

Sample Output

Outside
Inside
Externally tangent
Internally tangent
Intersection

HINT

外离与内含均指两个圆没有任何交点,但内含是指一个圆完全包含在另一个的内部,否则便是外离。

Append Code

append.cc,

[Submit][Status][Web Board]

HOME
Back


-->

???<中文?????English???All Copyright Reserved 2010-2011SDUSTOJTEAMGPL2.02003-2011HUSTOJ ProjectTEAM
Anything about the Problems, Please Contact Admin:
admin

#include<iostream>
#include<cmath>
using namespace std;
class Point{
public:
    double x,y;
    Point(double a=0,double b=0):x(a),y(b){}
    ~Point(){}
};
class Circle{
    friend class Point;
public:
    Point p;
    double r;
    Circle(Point a,double R):p(a),r(R){}
    ~Circle(){}
    int JudgeRelation(const Circle& cc)
    {

        double dc=sqrtl((cc.p.x - p.x)*(cc.p.x - p.x)+(cc.p.y - p.y)*(cc.p.y - p.y));

        if(fabs(dc - (r + cc.r)) < 1e-6) {
            return 3;
        }
        if(fabs(dc - fabs(r - cc.r)) < 1e-6)
        {
            return 4;
        }

        if(dc < fabs(r - cc.r))
            return 2;

        if(dc > r + cc.r)
            return 1;

        return 5;
    }
};
int main()
{
    int cases;
    double x, y, r;
    cin>>cases;
    for (int i = 0; i < cases; i++)
    {
        cin>>x>>y>>r;
        Point p1(x,y);
        Circle c1(p1, r);
        cin>>x>>y>>r;
        Point p2(x, y);
        Circle c2(p2, r);
        switch(c1.JudgeRelation(c2))
        {
        case 1:
            cout<<"Outside"<<endl;
            break;
        case 2:
            cout<<"Inside"<<endl;
            break;
        case 3:
            cout<<"Externally tangent"<<endl;
            break;
        case 4:
            cout<<"Internally tangent"<<endl;
            break;
        case 5:
            cout<<"Intersection"<<endl;
        }
    }
}
时间: 2025-01-02 18:33:31

实验12:Problem D: 判断两个圆之间的关系的相关文章

iOS中判断两个圆是否重叠

#import <Foundation/Foundation.h> #import <math.h> @interface Point2D : NSObject { double _x; // x值 double _y; // y值 } // x值的getter和setter - (void)setX:(double)x; - (double)x; // y值的getter和setter - (void)setY:(double)y; - (double)y; // 同时设置x和y

zoj 1608 Two Circles and a Rectangle 判断两个圆是否能放入一个矩形中

题目来源:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=608 分析: 两个圆放到矩形的临界点图为: 其中a为长, b为宽, r1 > r2 红色三角形的三边长分别为: x = a - (r1 +r2) y = b - (r1 + r2) z = r1 +r2 当 x ^ 2 + y ^ 2  >= z^2 时, 显然 矩形是可以放进去圆的. 代码如下: int main() { double w, l , r1 ,r2

iOS 判断两个日期之间的间隔

两个时间段,判断之间的相差,做一些时间范围限制使用 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMddHHmmss"]; NSDate* toDate     = [dateFormatter dateFromString:@"20140702142033"]; NSDate*  startDate    =

关于:无法定义这两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象。个人解决方案

1 public class UserClazz 2 { 3 public User User{get;set;} 4 public IList<Product> ProductList{get;set;} 5 } 6 7 public class User 8 { 9 public IList<Product> ProductList{get;set;} 10 public IList<UserClazz> UserClazzList{get;set;} 11 } 1

EF数据存贮问题二之“无法定义这两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象”

“无法定义这两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象”,这是在EF中,一对多关系表,有外键的类保存至数据库中出现的错误. 我原来是用JAVA开发的,习惯性的处理一对多中类与类的关系,在C#里也是这样处理的.下面是个简单的一对多关系C#里的实现(先数据库,后VS生成代码): public class ObjectA{ public int ID{set;get;} public int objectbid{set;get;}//数据库生成 public Objec

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

两条直线可能有三种关系:1.共线     2.平行(不包括共线)    3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, p2, p3, p4,直线L1,L2分别穿过前两个和后两个点.来判断直线L1和L2的关系 这三种关系一个一个来看: 1. 共线. 如果两条直线共线的话,那么另外一条直线上的点一定在这一条直线上.所以p3在p1p2上,所以用get_direction(p1, p2, p3)来判断p3相对于p1p2的关

判断两个日期之间的长度

/** *结束日期与开始日期之间的间隔天数 *return 两个日期之间的天数 */ private Long dateTest(String startDate, String endDate) throws ParseException {        Date start = new Date();        Date end  = new Date();        if(startDate.contains("-")){            start =  Too

实验14-SPSS-对应分析-研究品牌和品牌形象之间的关系

SPSS对应分析---研究品牌和品牌形象之间的关系 对应分析能够把一个交叉表结果通过图形的方式展现出来,用以表达不同变量之间以及不同类别之间的关系. 对应分析实际上也是"降维"方法的一种,比较适合对分类变量进行研究. 1.0 对应分析简介 对应分析可以看成是交叉表的图形化,对应分析的主要作用是用图形化的方式表达分类变量之间的关系.对应分析主要应用于产品地位.品牌研究.市场细分.竞争分析.广告研究等领域,因为它是一种图形化的数据分析方法,它能够将几组看似没有联系的数据,通过视觉上可以接受

HDU 1086You can Solve a Geometry Problem too(判断两条选段是否有交点)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086 判断两条线段是否有交点,我用的是跨立实验法: 两条线段分别是A1到B1,A2到B2,很显然,如果这两条线段有交点,那么可以肯定的是: A1-B1,A2-B1这两个向量分别在B2-B1的两边,判断是不是在两边可以用向量的叉积来判断,这里就不说了,同理B1-A1,B2-A1在A2-A1的两边,当同时满足这两个条件时,说明这两条线段是有交点的. 1 #include<cstdio> 2 #incl