zoukankan      html  css  js  c++  java
  • 51nod 1264 线段相交

    题意:求两线段是否相交

    使用叉乘与向量的方法

    数论资料 :http://dev.gameres.com/Program/Abstract/Geometry.htm#

    ( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) >= 0 ( Q1 - P1 ) × ( P2 - P1 ) * ( P2 - P1 ) × ( Q2 - P1 ) >= 0

    其中P1P2是一条线段的两端点,Q1Q2是另一个线段的两段点。

    ( P1 - Q1 ) × ( Q2 - Q1 )代表X1*Y2 + X3*Y1 + X2*Y3 - X3*Y2 - X1*Y3 - X2*Y1,

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    int t;
    struct node
    {
    double x;
    double y;
    }ma[9];
    double xx(node a,node b,node c)
    {
    return a.x*b.y+b.x*c.y+a.y*c.x-a.x*c.y-c.x*b.y-b.x*a.y;
    }
    int main()
    {
    cin>>t;
    while(t--)
    {
    for(int i=1;i<=4;i++)
    {
    cin>>ma[i].x>>ma[i].y;
    }
    double x1=xx(ma[1],ma[3],ma[4]);
    double x2=xx(ma[4],ma[3],ma[2]);
    double x3=xx(ma[3],ma[1],ma[2]);
    double x4=xx(ma[2],ma[1],ma[4]);
    if(x1*x2>=0&&x3*x4>=0)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    }
    return 0;
    }

  • 相关阅读:
    JS----事件
    JS----计时器
    JS----文档对象模型
    JS----基本数据类型
    JS----函数
    JS----数组
    JS----正则表达式
    CSS----盒子模型与浮动
    Web-9月13日随笔
    Web-9月14日随笔
  • 原文地址:https://www.cnblogs.com/sortmin/p/7376723.html
Copyright © 2011-2022 走看看