德莱联盟

德莱联盟

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 1
描述

欢迎来到德莱联盟。。。。

德莱文。。。

德莱文在逃跑,卡兹克在追。。。。

我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和 终点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证他们走的都是直线。

输入
几组数据,一个整数T表示T组数据
每组数据 8个实数,分别表示德莱文的起点和终点坐标,以及卡兹克的起点和终点坐标
输出
如果可能 输出 Interseetion,否则输出 Not Interseetion
样例输入
2
-19.74 7.14 22.23 -27.45 -38.79 -5.08 47.51 34.01
-8.61 9.91 -32.47 6.47 -3.81 -16.1 7.82 -6.37
样例输出
Interseetion

Not Interseetion


代码实现:

#include <stdio.h>  
#include <string.h>  
#include <stdlib.h>  
#include <math.h>  
#include <algorithm>  
using namespace std;  
int main()  
{  
    int n;  
    scanf("%d",&n);  
    while(n--)  
    {  
        double x1,x2,y1,y2,x3,x4,y3,y4,k1,k2;  
        double w1,w2,w3,w4;  
        int flag=0;  
        scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);  
        if((x2-x1)==0)              //如果斜率不存在  
        {  
            if((x3>=x2&&x4<=x2)||(x4>=x2&&x3<=x2))  
                flag+=1;  
        }  
        else                    //如果存在  
        {  
            k1=(double)(y2-y1)/(x2-x1);  
            w3=k1*(x3-x2)+y2;  
            w4=k1*(x4-x2)+y2;  
            if((y3>=w3&&y4<=w4)||(y3<=w3&&y4>=w4))      //看图模拟  
                flag+=1;  
        }  
        if((x4-x3)==0)                  //继续判断斜率是否存在  
        {  
            if((x2>=x3&&x1<=x3)||(x1>=x3&&x2<=x3))  
                flag+=1;  
        }  
        else  
        {  
            k2=(double)(y4-y3)/(x4-x3);  
            w1=k2*(x1-x3)+y3;  
            w2=k2*(x2-x3)+y3;  
            if((y2>=w2&&y1<=w1)||(y2<=w2&&y1>=w1))  
                flag+=1;  
        }  
        if(flag==2)  
            printf("Interseetion\n");  
        else  
            printf("Not Interseetion\n");  
    }  
    return 0;  
}  


数学美 之 判断线段相交的最简方法,https://segmentfault.com/a/1190000004457595)里面有两线段相交的方法,该作者解释的比较详细,值得学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值