• (计算几何 线段判交) 51nod1264 线段相交


    1264 线段相交

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

    输入

    第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
    第2 - T + 1行:每行8个数,x1,y1,x2,y2,x3,y3,x4,y4。(-10^8 <= xi, yi <= 10^8)
    (直线1的两个端点为x1,y1 | x2, y2,直线2的两个端点为x3,y3 | x4, y4)

    输出

    输出共T行,如果相交输出"Yes",否则输出"No"。

    输入样例

    2
    1 2 2 1 0 0 2 2
    -1 1 1 1 0 0 1 -1

    输出样例

    Yes
    No

    注意这个题中,部分重合可以算是线段相交。和nyoj1016类似 https://www.cnblogs.com/Weixu-Liu/p/10599278.html

    C++代码:
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct Point{
        double x1,y1,x2,y2;
    }point[2];
    int cmp(const Point& a,const Point& b){
        double k1 = (a.x2 - a.x1)*(b.y1 - a.y1) - (b.x1 - a.x1)*(a.y2 - a.y1);
        double k2 = (a.x2 - a.x1)*(b.y2 - a.y1) - (b.x2 - a.x1)*(a.y2 - a.y1);
        if(k1 * k2 <= 0){
            return true;
        }
        else{
            return false;
        }
    }
    int main(){
        int T;
        scanf("%d",&T);
        while(T--){
            scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&point[0].x1,&point[0].y1,&point[0].x2,
                                             &point[0].y2,&point[1].x1,&point[1].y1,
                                             &point[1].x2,&point[1].y2);
            if(!(max(point[0].x1,point[0].x2) < min(point[1].x1,point[1].x2) || 
                 max(point[0].y1,point[0].y2) < min(point[1].y1,point[1].y2) || 
                 max(point[1].x1,point[1].x2) < min(point[0].x1,point[0].x2) ||
                 max(point[1].y1,point[1].y2) < min(point[0].y1,point[0].y2))){
                if(cmp(point[0],point[1]) && cmp(point[1],point[0])){
                    printf("Yes
    ");
                }
                else{
                    printf("No
    ");
                }
            }
            else{
                printf("No
    ");
            }
        
        }
        return 0;
    }



    请使用手机"扫一扫"x

  • 相关阅读:
    redis
    魔法方法
    vue
    bbs技术总结
    Linux
    爬虫
    路飞项目
    Django-rest framework框架
    Django框架
    WEB
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10599336.html
Copyright © 2020-2023  润新知