博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

判断2个线段是否相交

给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交)。 如果相交,输出"Yes",否则输出"No"。

#include<bits/stdc++.h>
using namespace std;
#define  ll long long
struct zb
{
    double x,y;
}a,b,c,d;
double en(zb a,zb b,zb c)
{
    double m1=(a.x-b.x)*(a.y-c.y);
    double m2=(a.y-b.y)*(a.x-c.x);
    return m1-m2;
}
int main()
{
   int t;
   cin>>t;
   while(t--)
   {
       cin>>a.x>>a.y;
       cin>>b.x>>b.y;
       cin>>c.x>>c.y;
       cin>>d.x>>d.y;
       double t1=en(a,b,c);
       double t2=en(a,b,d);
       double t3=en(c,d,a);
       double t4=en(c,d,b);
       if(t1*t2<=0&&t3*t4<=0)cout<<"Yes\n";
       else cout<<"No\n";

   }
}

 

posted @ 2018-10-14 09:55  GUET_uzi  阅读(321)  评论(0编辑  收藏  举报

- 创建于 2018年9月1日

这是一位ACM爱好者&数学爱好者的个人站,内容主要是算法&数据结构&数学研究的技术文章,大部分来自学习,部分来源于网络,希望对大家有所帮助。